Supplementary material - Appendix 1

Western blot and cell viability data analyses

Stressors and concentrations:

Control - No stress

Hydrogen peroxide (H2O2) - 100, 300, 500 & 1250 $\mu$M

Heat - 50$^\circ$C

Cadmium sulfate (CdSO4) - 8 mM

Potassium ferricynaide (K3Fe(CN)6) - 30 mM

Cell viability assay - MTT Tetrazolium Reduction Assay

Contents:

Section S1 - Separating oxidized and reduced Trx1 by alkylation using purified Trx1

Section S2 - Western blot parameter optimization and control analyses

Section S3 - MTT assay cell viability results and analyses

Section S4 - Stressor blots and thioredoxin redox charge analyses

Section S5 - Thioredoxin redox charge and cell viability correlation plots

Section S6 - Total protein (Ponceau S stain) analyses

Section S7 - Supporting correlation data between the Trx redox charge and cell viability extrapolated from literature

Section S8 - Model of hydrogen peroxide metabolism in fission yeast

In [1]:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import scipy.stats as sp
import scipy as sp
from scipy import interpolate
from scipy.interpolate import CubicSpline
from pingouin import distance_corr
import scipy.optimize
import scipy.misc
import scipy.stats
import os
%pylab inline
import matplotlib.image as mpimg
from matplotlib.pyplot import figure
backupdir = os.getcwd()
os.chdir(backupdir)
Populating the interactive namespace from numpy and matplotlib

Section S1 - Separating oxidized and reduced Trx1 by alkylation, using purified Trx1

Alkylation is a chemical process that involves alkyl groups being added to a substrate molecule. Maleimides like methoxypolyethylene glycol maleimide (PEG-maleimide), 4-acetamido-4′-maleimidylstilbene-2,2′-disulfonic acid (AMS), 4-acetamido-4'-((iodoacetyl)amino)stilbene-2,2'-disulfonic acid (AIS), N-ethyl maleimide (NEM) and iodoacetamide (IAM) are alkylating agents that add alkyl groups to free thiols exposed. The alkylation of free thiol groups present within reduced thioredoxin is what causes a shift in mobility of the protein isoform during gel electrophoresis, allowing for separation of reduced and oxidized thioredoxin.

A pure system was needed to determine the alkylating agent that would best separate the thioredoxin isoforms, therefore Schizosaccharomyces pombe Trx1 was expressed in a pET28α vector in Escherichia coli BL21 cells and purified. Subsequent alkylation experiments were performed.

Figure S1 Recombinant Schizosaccharomyces pombe Trx1 induced with 0.5 mM IPTG

In [2]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Induction.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Figure S2 Ni-NTA purification of His-tagged Trx1

In [3]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Imidazole washes.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Figure S3 Batch Ni-NTA purification of His-tagged Trx1

In [4]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Purification.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Figure S4 Alkylation of recombinant Trx1 using IAM (75 mM), NEM (25 mM) and PEG-maleimide (3 mM)

In [5]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Alkylation_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Figure S5 Alkylation of recombinant Trx1 using AMS (15 mM) and AIS (25 mM)

In [6]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Alkylation_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Figure S6 Alkylation of recombinant Trx1 using PEG-maleimide (3 mM)

In [7]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Alkylation_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Section 2 - Western blot parameter optimization and control analyses

Stressor time-course experiments were carried out on Schizosaccharomyces pombe (JB35 cells, FLAG-tagged Trx1) and redox Western blotting analyses were used to analyze the samples.

First, optimization for the Western blotting assay was carried out to determine the optimal sample protein concentration, primary and secondary antibody concentrations and to confirm that the signal detected from the protein concentration chosen was in the linear range of detection.

Figure S7 Bovine serum albumin (BSA) standard curve to determine unknown S. pombe JB35 sample protein concentration

In [57]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Standard curve_1.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Standard curve_1.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Standard curve_1.csv')

Standard_curve_1 = pd.read_csv('Standard curve_1.csv')

Standard_curve_1["Corrected_OD_Rep1"] = (Standard_curve_1['Rep_1'] - Standard_curve_1['Blank'])

Standard_curve_1["Corrected_OD_Rep2"] = (Standard_curve_1['Rep_2'] - Standard_curve_1['Blank'])

Standard_curve_1["Corrected_OD_Rep3"] = (Standard_curve_1['Rep_3'] - Standard_curve_1['Blank'])

Standard_curve_1['Average_OD'] = Standard_curve_1.iloc[:, [5,6,7]].mean(axis=1)

Standard_curve_1['Std error of average OD'] = Standard_curve_1.iloc[:, [5,6,7]].sem(axis=1)

Standard_curve_1
Out[57]:
BSA concentration (ug/ml) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 750 0.349 0.338 0.355 0.128 0.221 0.210 0.227 0.219333 0.004978
1 500 0.250 0.256 0.265 0.128 0.122 0.128 0.137 0.129000 0.004359
2 250 0.188 0.189 0.192 0.128 0.060 0.061 0.064 0.061667 0.001202
3 125 0.159 0.162 0.163 0.128 0.031 0.034 0.035 0.033333 0.001202
4 25 0.133 0.134 0.139 0.128 0.005 0.006 0.011 0.007333 0.001856
5 0 0.126 0.128 0.131 0.128 -0.002 0.000 0.003 0.000333 0.001453
In [93]:
fig, ax1 = plt.subplots(figsize=(9,6))

x = Standard_curve_1['BSA concentration (ug/ml)']
y = Standard_curve_1['Average_OD']
yerror = Standard_curve_1['Std error of average OD'] 
xerror = Standard_curve_1['Std error of average OD']
#plt.plot(x,y)
plt.errorbar(x,y,yerr=yerror,xerr=xerror, color='black', capsize=3)
ax1.set_ylabel(r'Absorbance (562 nm)', size=20)
ax1.set_xlabel(r'BSA concentration ($\mu$g/ml)', size=20)
plt.ylim(0,0.3)

plt.plot([0, 547], [0.15, 0.15], 'k-', lw=2, color='green', linestyle='dashed')
plt.plot([547, 547], [0.15, 0], 'k-', lw=2, color='green', linestyle='dashed')

plt.xticks(fontsize=18, color='black')
plt.yticks(fontsize=18,color='black')

fig.savefig('Standard curve_BSA.png', dpi=500)

Figure S8 Dot blots carried out on increasing S. pombe JB35 protein masses, to determine the optimal primary and secondary antibody combination

In [10]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Dot blots.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()
In [106]:
fig, ax1 = plt.subplots(figsize=(9,6))

x = [250, 416.67, 583.33, 833.33, 1166.67, 1380]
y = [4144.581, 6458.903, 8950.874, 10189.388, 8647.924, 14163.886]

ax1.set_ylabel(r'Signal intensity', size=20)
ax1.set_xlabel(r'Protein concentration ($\mu$g/ml)', size=20)

plt.ylim(0,15000)
plt.plot([417, 417], [14000, 0], 'k-', lw=2, color='red', linestyle='dashed')
plt.plot([583, 583], [14000, 0], 'k-', lw=2, color='red', linestyle='dashed')

plt.plot(x,y, color='black', marker = 'o')

plt.xticks(fontsize=18, color='black')
plt.xticks(rotation=30)
plt.yticks(fontsize=18,color='black')

fig.savefig('Dot blot quantification.png', dpi=500, bbox_inches='tight')

Figure S9 S. pombe JB35 sample protein standard curve

In [59]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Western blotting and cell viability analyses\Standard curve_2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Western blotting and cell viability analyses\Standard curve_2.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Western blotting and cell viability analyses\Standard curve_2.csv')

Standard_curve_2 = pd.read_csv('Standard curve_2.csv')

Standard_curve_2["Corrected_OD_Rep1"] = (Standard_curve_2['Rep_1'] - Standard_curve_2['Blank'])

Standard_curve_2["Corrected_OD_Rep2"] = (Standard_curve_2['Rep_2'] - Standard_curve_2['Blank'])

Standard_curve_2["Corrected_OD_Rep3"] = (Standard_curve_2['Rep_3'] - Standard_curve_2['Blank'])

Standard_curve_2['Average_OD'] = Standard_curve_2.iloc[:, [5,6,7]].mean(axis=1)

Standard_curve_2['Std error of average OD'] = Standard_curve_2.iloc[:, [5,6,7]].sem(axis=1)

Standard_curve_2
Out[59]:
Protein concentration (ug/ml) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 250.00 0.214 0.219 0.224 0.138 0.076 0.081 0.086 0.081000 0.002887
1 416.67 0.288 0.276 0.314 0.138 0.150 0.138 0.176 0.154667 0.011215
2 583.33 0.413 0.382 0.376 0.138 0.275 0.244 0.238 0.252333 0.011465
In [97]:
fig, ax1 = plt.subplots(figsize=(9,6))

x = Standard_curve_2['Protein concentration (ug/ml)']
y = Standard_curve_2['Average_OD']
yerror = Standard_curve_2['Std error of average OD'] 
xerror = Standard_curve_2['Std error of average OD']
#plt.plot(x,y)
plt.errorbar(x,y,yerr=yerror,xerr=xerror, color='black', capsize=3)
ax1.set_ylabel(r'Absorbance (562 nm)', size=20)
ax1.set_xlabel(r'Protein concentration ($\mu$g/ml)', size=20)
plt.ylim(0,0.3)
plt.xlim(200,600)
plt.plot([0, 400], [0.15, 0.15], 'k-', lw=2, color='green', linestyle='dashed')
plt.plot([400, 400], [0.15, 0], 'k-', lw=2, color='green', linestyle='dashed')

plt.xticks(fontsize=18, color='black')
plt.xticks(rotation=30)
plt.yticks(fontsize=18,color='black')

fig.savefig('Standard curve_protein.png', dpi=500)

Figure S10 Confirmation of dot blot analyses and sizing Trx1

In [14]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Linear_range_blot.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()
In [99]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Western blotting and cell viability analyses\Sizing Trx1.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Western blotting and cell viability analyses\Sizing Trx1.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Western blotting and cell viability analyses\Sizing Trx1.csv')

Sizing_Trx1 = pd.read_csv('Sizing Trx1.csv')
In [101]:
fig, ax1 = plt.subplots(figsize=(9,6))

x = Sizing_Trx1['Distance migrated (mm)']
y = Sizing_Trx1['MWM (kDa)']

#plt.plot(x,y)

ax1.set_ylabel(r'MWM (kDa)', size=20)
ax1.set_xlabel(r'Distance migrated (mm)', size=20)
plt.ylim(0,300)
plt.xlim(0,100)
plt.plot(x,y, color='black', marker = 'o')
plt.plot([0, 84], [12, 12], 'k-', lw=2, color='blue', linestyle='dashed')
plt.plot([84, 84], [12, 0], 'k-', lw=2, color='blue', linestyle='dashed')

plt.xticks(fontsize=18, color='black')
plt.yticks(fontsize=18,color='black')

fig.savefig('Standard curve_sizing Trx.png', dpi=500)

Figure S11 Primary antibody specificity control using a non-tagged Trx1 protein extract

In [17]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Primary antibody specificity.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Figure S12 Secondary antibody specificity control (no primary antibody), with a non-tagged Trx1 protein extract and purified, recombinant Trx1

In [19]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Antibody_control.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Figure S13 Oxidized ( 2 mM diamide) and reduced ( 1 mM DTT) S. pombe JB35 Trx1 controls

In [20]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Ox and Red controls.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

Section S3 - MTT assay cell viability results and analyses

Cell viability stressor tests were carried out on Schizosaccharomyces pombe (JB35 cells, FLAG-tagged Trx1) using the MTT (3-(4,5-dimethylthiazol-2-yl)-2,5-diphenyltetrazolium bromide) tetrazolium reduction assay. This assay works due to the reduction of a yellow tetrazolium salt by metabolically viable cells to purple formazan crystals, that can be spectrophotometrically quantified.

Stressors :

Control - No stress

Hydrogen peroxide (H2O2) - 100, 300, 500 & 1250 $\mu$M

Heat - 50$^\circ$C

Cadmium sulfate (CdSO4) - 8 mM

Potassium ferricynaide (K3Fe(CN)6) - 30 mM

3.1 No stress control

In [2]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability_No stress.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability_No stress.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability_No stress.csv')

Viability_no_stress = pd.read_csv('Viability_No stress.csv')

Viability_no_stress["Corrected_OD_Rep1"] = (Viability_no_stress['Rep_1'] - Viability_no_stress['Blank'])

Viability_no_stress["Corrected_OD_Rep2"] = (Viability_no_stress['Rep_2'] - Viability_no_stress['Blank'])

Viability_no_stress["Corrected_OD_Rep3"] = (Viability_no_stress['Rep_3'] - Viability_no_stress['Blank'])

Viability_no_stress['Average_OD'] = Viability_no_stress.iloc[:, [5,6,7]].mean(axis=1)

Viability_no_stress['Std error of average OD'] = Viability_no_stress.iloc[:, [5,6,7]].sem(axis=1)

Viability_no_stress
Out[2]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 1.072 1.114 1.226 0.046 1.026 1.068 1.180 1.091333 0.045961
1 1 1.219 1.167 1.464 0.046 1.173 1.121 1.418 1.237333 0.091572
2 5 1.150 1.152 1.443 0.046 1.104 1.106 1.397 1.202333 0.097335
3 10 1.350 1.450 1.738 0.046 1.304 1.404 1.692 1.466667 0.116306
4 20 1.419 1.529 1.834 0.046 1.373 1.483 1.788 1.548000 0.124130
5 40 1.717 1.710 1.958 0.046 1.671 1.664 1.912 1.749000 0.081525
6 60 1.743 1.811 1.946 0.046 1.697 1.765 1.900 1.787333 0.059655
In [22]:
Time0=([1.026,1.068,1.180])
Time60=([1.697,1.765,1.900])

from scipy import stats
print ('No stress control - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
No stress control - Time (min) 0 vs 60
Ttest_indResult(statistic=-9.24210518752364, pvalue=0.0007619201977169598)

3.2 Hydrogen peroxide (100 $\mu$M)

In [3]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 100uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 100uM H2O2.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability 100uM H2O2.csv')

Viability_100uM_H2O2 = pd.read_csv('Viability 100uM H2O2.csv')

Viability_100uM_H2O2["Corrected_OD_Rep1"] = (Viability_100uM_H2O2['Rep_1'] - Viability_100uM_H2O2['Blank'])

Viability_100uM_H2O2["Corrected_OD_Rep2"] = (Viability_100uM_H2O2['Rep_2'] - Viability_100uM_H2O2['Blank'])

Viability_100uM_H2O2["Corrected_OD_Rep3"] = (Viability_100uM_H2O2['Rep_3'] - Viability_100uM_H2O2['Blank'])

Viability_100uM_H2O2['Average_OD'] = Viability_100uM_H2O2.iloc[:, [5,6,7]].mean(axis=1)

Viability_100uM_H2O2['Std error of average OD'] = Viability_100uM_H2O2.iloc[:, [5,6,7]].sem(axis=1)

Viability_100uM_H2O2
Out[3]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 1.346 1.075 0.925 0.045 1.301 1.030 0.880 1.070333 0.123194
1 1 1.002 1.076 1.049 0.045 0.957 1.031 1.004 0.997333 0.021620
2 5 1.087 1.035 1.000 0.045 1.042 0.990 0.955 0.995667 0.025274
3 10 1.179 1.176 1.106 0.045 1.134 1.131 1.061 1.108667 0.023849
4 20 1.346 1.295 1.219 0.045 1.301 1.250 1.174 1.241667 0.036898
5 40 1.503 1.491 1.522 0.045 1.458 1.446 1.477 1.460333 0.009025
6 60 1.563 1.399 1.524 0.045 1.518 1.354 1.479 1.450333 0.049465
In [24]:
Time0=([1.301,1.030,0.880])
Time60=([1.518,1.354,1.479])

from scipy import stats
print ('100uM H2O2 - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
100uM H2O2 - Time (min) 0 vs 60
Ttest_indResult(statistic=-2.8624428903353234, pvalue=0.04581639827373347)

3.3 Hydrogen peroxide (300 $\mu$M)

In [4]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 300uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 300uM H2O2.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability 300uM H2O2.csv')

Viability_300uM_H2O2 = pd.read_csv('Viability 300uM H2O2.csv')

Viability_300uM_H2O2["Corrected_OD_Rep1"] = (Viability_300uM_H2O2['Rep_1'] - Viability_300uM_H2O2['Blank'])

Viability_300uM_H2O2["Corrected_OD_Rep2"] = (Viability_300uM_H2O2['Rep_2'] - Viability_300uM_H2O2['Blank'])

Viability_300uM_H2O2["Corrected_OD_Rep3"] = (Viability_300uM_H2O2['Rep_3'] - Viability_300uM_H2O2['Blank'])

Viability_300uM_H2O2['Average_OD'] = Viability_300uM_H2O2.iloc[:, [5,6,7]].mean(axis=1)

Viability_300uM_H2O2['Std error of average OD'] = Viability_300uM_H2O2.iloc[:, [5,6,7]].sem(axis=1)

Viability_300uM_H2O2
Out[4]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 0.944 1.026 1.034 0.047 0.897 0.979 0.987 0.954333 0.028760
1 1 0.831 0.788 0.849 0.047 0.784 0.741 0.802 0.775667 0.018095
2 5 0.942 0.843 0.734 0.047 0.895 0.796 0.687 0.792667 0.060068
3 10 1.113 0.939 0.919 0.047 1.066 0.892 0.872 0.943333 0.061604
4 20 0.730 0.839 0.932 0.047 0.683 0.792 0.885 0.786667 0.058373
5 40 1.078 0.692 0.825 0.047 1.031 0.645 0.778 0.818000 0.113209
6 60 0.676 0.760 0.742 0.047 0.629 0.713 0.695 0.679000 0.025534
In [26]:
Time0=([0.897,0.979,0.987])
Time60=([0.629,0.713,0.695])

from scipy import stats
print ('300uM H2O2 - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
300uM H2O2 - Time (min) 0 vs 60
Ttest_indResult(statistic=7.159099407531869, pvalue=0.002014826486321175)

3.4 Hydrogen peroxide (500 $\mu$M)

In [5]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 500uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 500uM H2O2.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability 500uM H2O2.csv')

Viability_500uM_H2O2 = pd.read_csv('Viability 500uM H2O2.csv')

Viability_500uM_H2O2["Corrected_OD_Rep1"] = (Viability_500uM_H2O2['Rep_1'] - Viability_500uM_H2O2['Blank'])

Viability_500uM_H2O2["Corrected_OD_Rep2"] = (Viability_500uM_H2O2['Rep_2'] - Viability_500uM_H2O2['Blank'])

Viability_500uM_H2O2["Corrected_OD_Rep3"] = (Viability_500uM_H2O2['Rep_3'] - Viability_500uM_H2O2['Blank'])

Viability_500uM_H2O2['Average_OD'] = Viability_500uM_H2O2.iloc[:, [5,6,7]].mean(axis=1)

Viability_500uM_H2O2['Std error of average OD'] = Viability_500uM_H2O2.iloc[:, [5,6,7]].sem(axis=1)

Viability_500uM_H2O2
Out[5]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 1.103 1.077 1.077 0.045 1.058 1.032 1.032 1.040667 0.008667
1 1 0.634 0.428 0.482 0.045 0.589 0.383 0.437 0.469667 0.061669
2 5 0.399 0.423 0.475 0.045 0.354 0.378 0.430 0.387333 0.022430
3 10 0.423 0.411 0.410 0.045 0.378 0.366 0.365 0.369667 0.004177
4 20 0.353 0.419 0.413 0.045 0.308 0.374 0.368 0.350000 0.021071
5 40 0.415 0.425 0.400 0.045 0.370 0.380 0.355 0.368333 0.007265
6 60 0.317 0.509 0.379 0.045 0.272 0.464 0.334 0.356667 0.056572
In [28]:
Time0=([1.058,1.032,1.032])
Time60=([0.272,0.464,0.334])

from scipy import stats
print ('500uM H2O2 - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
500uM H2O2 - Time (min) 0 vs 60
Ttest_indResult(statistic=11.95125786059672, pvalue=0.00028086223560053913)

3.5 Hydrogen peroxide (1250 $\mu$M)

In [6]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 1250uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability 1250uM H2O2.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability 1250uM H2O2.csv')

Viability_1250uM_H2O2 = pd.read_csv('Viability 1250uM H2O2.csv')

Viability_1250uM_H2O2["Corrected_OD_Rep1"] = (Viability_1250uM_H2O2['Rep_1'] - Viability_1250uM_H2O2['Blank'])

Viability_1250uM_H2O2["Corrected_OD_Rep2"] = (Viability_1250uM_H2O2['Rep_2'] - Viability_1250uM_H2O2['Blank'])

Viability_1250uM_H2O2["Corrected_OD_Rep3"] = (Viability_1250uM_H2O2['Rep_3'] - Viability_1250uM_H2O2['Blank'])

Viability_1250uM_H2O2['Average_OD'] = Viability_1250uM_H2O2.iloc[:, [5,6,7]].mean(axis=1)

Viability_1250uM_H2O2['Std error of average OD'] = Viability_1250uM_H2O2.iloc[:, [5,6,7]].sem(axis=1)

Viability_1250uM_H2O2
Out[6]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 2.635 2.711 2.199 0.047 2.588 2.664 2.152 2.468000 0.159516
1 1 0.461 0.444 0.466 0.047 0.414 0.397 0.419 0.410000 0.006658
2 5 0.424 0.441 0.435 0.047 0.377 0.394 0.388 0.386333 0.004978
3 10 0.404 0.423 0.409 0.047 0.357 0.376 0.362 0.365000 0.005686
4 20 0.371 0.372 0.417 0.047 0.324 0.325 0.370 0.339667 0.015169
5 40 0.331 0.306 0.321 0.047 0.284 0.259 0.274 0.272333 0.007265
6 60 0.256 0.256 0.250 0.047 0.209 0.209 0.203 0.207000 0.002000
In [30]:
Time0=([2.588,2.664,2.152])
Time60=([0.209,0.209,0.203])

from scipy import stats
print ('1250uM H2O2 - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
1250uM H2O2 - Time (min) 0 vs 60
Ttest_indResult(statistic=14.173018607068787, pvalue=0.00014388784911953216)

3.6 Heat (50$^\circ$C)

In [7]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability Heat.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability Heat.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability Heat.csv')

Viability_Heat = pd.read_csv('Viability Heat.csv')

Viability_Heat["Corrected_OD_Rep1"] = (Viability_Heat['Rep_1'] - Viability_Heat['Blank'])

Viability_Heat["Corrected_OD_Rep2"] = (Viability_Heat['Rep_2'] - Viability_Heat['Blank'])

Viability_Heat["Corrected_OD_Rep3"] = (Viability_Heat['Rep_3'] - Viability_Heat['Blank'])

Viability_Heat['Average_OD'] = Viability_Heat.iloc[:, [5,6,7]].mean(axis=1)

Viability_Heat['Std error of average OD'] = Viability_Heat.iloc[:, [5,6,7]].sem(axis=1)

Viability_Heat
Out[7]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 1.103 1.179 1.351 0.052 1.051 1.127 1.299 1.159000 0.073358
1 1 1.154 1.065 1.155 0.052 1.102 1.013 1.103 1.072667 0.029835
2 5 0.965 0.987 1.016 0.052 0.913 0.935 0.964 0.937333 0.014769
3 10 0.980 1.002 0.791 0.052 0.928 0.950 0.739 0.872333 0.066968
4 20 0.858 0.779 0.891 0.052 0.806 0.727 0.839 0.790667 0.033228
5 40 0.659 0.979 0.862 0.052 0.607 0.927 0.810 0.781333 0.093481
6 60 0.629 0.631 0.772 0.052 0.577 0.579 0.720 0.625333 0.047337
In [32]:
Time0=([1.051,1.127,1.299])
Time60=([0.577,0.579,0.720])

from scipy import stats
print ('Heat - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
Heat - Time (min) 0 vs 60
Ttest_indResult(statistic=6.112690957614764, pvalue=0.00362619720254898)

3.7 Cadmium sulfate (8 mM)

In [8]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability Cadmium.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability Cadmium.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability Cadmium.csv')

Viability_Cadmium = pd.read_csv('Viability Cadmium.csv')

Viability_Cadmium["Corrected_OD_Rep1"] = (Viability_Cadmium['Rep_1'] - Viability_Cadmium['Blank'])

Viability_Cadmium["Corrected_OD_Rep2"] = (Viability_Cadmium['Rep_2'] - Viability_Cadmium['Blank'])

Viability_Cadmium["Corrected_OD_Rep3"] = (Viability_Cadmium['Rep_3'] - Viability_Cadmium['Blank'])

Viability_Cadmium['Average_OD'] = Viability_Cadmium.iloc[:, [5,6,7]].mean(axis=1)

Viability_Cadmium['Std error of average OD'] = Viability_Cadmium.iloc[:, [5,6,7]].sem(axis=1)

Viability_Cadmium
Out[8]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 2.168 1.984 2.238 0.047 2.121 1.937 2.191 2.083000 0.075745
1 1 0.668 0.831 0.685 0.047 0.621 0.784 0.638 0.681000 0.051733
2 5 0.505 0.746 0.902 0.047 0.458 0.699 0.855 0.670667 0.115476
3 10 0.721 1.024 1.122 0.047 0.674 0.977 1.075 0.908667 0.120696
4 20 0.220 0.240 0.267 0.047 0.173 0.193 0.220 0.195333 0.013618
5 40 0.388 0.279 0.211 0.047 0.341 0.232 0.164 0.245667 0.051550
6 60 0.139 0.229 0.148 0.047 0.092 0.182 0.101 0.125000 0.028618
In [34]:
Time0=([2.121,1.937,2.191])
Time60=([0.092,0.182,0.101])

from scipy import stats
print ('Cadmium - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
Cadmium - Time (min) 0 vs 60
Ttest_indResult(statistic=24.181440847227538, pvalue=1.7349513505490892e-05)

3.8 Potassium ferricyanide (30 mM)

In [9]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Viability Cyanide.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Viability Cyanide.csv', index = None, header=True)

pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Viability Cyanide.csv')

Viability_Cyanide = pd.read_csv('Viability Cyanide.csv')

Viability_Cyanide["Corrected_OD_Rep1"] = (Viability_Cyanide['Rep_1'] - Viability_Cyanide['Blank'])

Viability_Cyanide["Corrected_OD_Rep2"] = (Viability_Cyanide['Rep_2'] - Viability_Cyanide['Blank'])

Viability_Cyanide["Corrected_OD_Rep3"] = (Viability_Cyanide['Rep_3'] - Viability_Cyanide['Blank'])

Viability_Cyanide['Average_OD'] = Viability_Cyanide.iloc[:, [5,6,7]].mean(axis=1)

Viability_Cyanide['Std error of average OD'] = Viability_Cyanide.iloc[:, [5,6,7]].sem(axis=1)

Viability_Cyanide
Out[9]:
Time (min) Rep_1 Rep_2 Rep_3 Blank Corrected_OD_Rep1 Corrected_OD_Rep2 Corrected_OD_Rep3 Average_OD Std error of average OD
0 0 2.370 2.213 2.372 0.071 2.299 2.142 2.301 2.247333 0.052670
1 1 1.089 1.126 1.147 0.071 1.018 1.055 1.076 1.049667 0.016954
2 5 1.156 1.248 1.204 0.071 1.085 1.177 1.133 1.131667 0.026566
3 10 1.267 1.108 1.123 0.071 1.196 1.037 1.052 1.095000 0.050685
4 20 1.222 0.888 1.049 0.071 1.151 0.817 0.978 0.982000 0.096438
5 40 0.879 1.282 1.130 0.071 0.808 1.211 1.059 1.026000 0.117500
6 60 1.173 1.335 1.354 0.071 1.102 1.264 1.283 1.216333 0.057429
In [36]:
Time0=([2.299,2.142,2.301])
Time60=([1.102,1.264,1.283])

from scipy import stats
print ('Cyanide - Time (min) 0 vs 60')
f=stats.ttest_ind(Time0,Time60)
print (f)
print ('')
Cyanide - Time (min) 0 vs 60
Ttest_indResult(statistic=13.230761378717675, pvalue=0.00018856053233167188)

3.9 Cell viability plotted against time for all stressors

In [55]:
fig, ax1 = plt.subplots(figsize=(10,7))

x1 = Viability_no_stress['Time (min)']
y1 = Viability_no_stress['Average_OD']
y1error = Viability_no_stress['Std error of average OD'] 
x1error = Viability_no_stress['Std error of average OD']

plt.plot(x1,y1, color='royalblue', marker= 'o', label='No stress control', linewidth=4, markersize=10)

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='royalblue', capsize=4, linewidth=2)


ax1.set_ylabel(r'Absorbance (562 nm)', size=20)
ax1.set_xlabel(r'Time (min)', size=20)
plt.legend(['No stress control'], frameon=False)
plt.legend(bbox_to_anchor=(1.35, 1), loc='upper right', borderaxespad=0, fontsize=18)
plt.ylim(0,3)
ax1.tick_params(axis='x', labelsize=18)
ax1.tick_params(axis='y', labelsize=18)

fig.savefig('Viability_No stress control.png', dpi=500, bbox_inches='tight')
In [16]:
fig, ax1 = plt.subplots(figsize=(10,7))

x2 = Viability_100uM_H2O2['Time (min)']
y2 = Viability_100uM_H2O2['Average_OD']
y2error = Viability_100uM_H2O2['Std error of average OD'] 
x2error = Viability_100uM_H2O2['Std error of average OD']

x3 = Viability_300uM_H2O2['Time (min)']
y3 = Viability_300uM_H2O2['Average_OD']
y3error = Viability_300uM_H2O2['Std error of average OD'] 
x3error = Viability_300uM_H2O2['Std error of average OD']

x4 = Viability_500uM_H2O2['Time (min)']
y4 = Viability_500uM_H2O2['Average_OD']
y4error = Viability_500uM_H2O2['Std error of average OD'] 
x4error = Viability_500uM_H2O2['Std error of average OD']

x5 = Viability_1250uM_H2O2['Time (min)']
y5 = Viability_1250uM_H2O2['Average_OD']
y5error = Viability_1250uM_H2O2['Std error of average OD'] 
x5error = Viability_1250uM_H2O2['Std error of average OD']

plt.plot(x2,y2, color='darkorange', marker= '>', label=r'100 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)
plt.plot(x3,y3, color='seagreen', marker= 's', label=r'300 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)
plt.plot(x4,y4, color='crimson', marker= 'p', label=r'500 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)
plt.plot(x5,y5, color='darkviolet', marker= '*', label=r'1250 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)

ax1.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='darkorange', capsize=4, linewidth=2)
ax1.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='seagreen', capsize=4, linewidth=2)
ax1.errorbar(x4,y4,yerr=y4error,xerr=x4error, color='crimson', capsize=4, linewidth=2)
ax1.errorbar(x5,y5,yerr=y5error,xerr=x5error, color='darkviolet', capsize=4, linewidth=2)

ax1.set_ylabel(r'Absorbance (562 nm)', size=20)
ax1.set_xlabel(r'Time (min)', size=20)
plt.legend(['100 $\mu$M $H_2O_2$','300 $\mu$M $H_2O_2$','500 $\mu$M $H_2O_2$','1250 $\mu$M $H_2O_2$'], frameon=False)
plt.legend(bbox_to_anchor=(1.32, 1), loc='upper right', borderaxespad=0, fontsize=18)
plt.ylim(0,3)
ax1.tick_params(axis='x', labelsize=18)
ax1.tick_params(axis='y', labelsize=18)

fig.savefig('Viability_H2O2 stressors.png', dpi=500, bbox_inches='tight')
In [18]:
fig, ax1 = plt.subplots(figsize=(10,7))

x2 = Viability_Heat['Time (min)']
y2 = Viability_Heat['Average_OD']
y2error = Viability_Heat['Std error of average OD'] 
x2error = Viability_Heat['Std error of average OD']

x3 = Viability_Cadmium['Time (min)']
y3 = Viability_Cadmium['Average_OD']
y3error = Viability_Cadmium['Std error of average OD'] 
x3error = Viability_Cadmium['Std error of average OD']

x4 = Viability_Cyanide['Time (min)']
y4 = Viability_Cyanide['Average_OD']
y4error = Viability_Cyanide['Std error of average OD'] 
x4error = Viability_Cyanide['Std error of average OD']

plt.plot(x2,y2, color='magenta', marker= 'H', label='50$^\circ$C Heat', linewidth=4, markersize=10)
plt.plot(x3,y3, color='limegreen', marker= 'D', label=r'8 mM ${\rm CdSO_4}$', linewidth=4, markersize=10)
plt.plot(x4,y4, color='deepskyblue', marker= 'X', label=r'30 mM ${\rm K_3Fe(CN)_6}$', linewidth=4, markersize=10)

ax1.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='magenta', capsize=4, linewidth=2)
ax1.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='limegreen', capsize=4, linewidth=2)
ax1.errorbar(x4,y4,yerr=y4error,xerr=x4error, color='deepskyblue', capsize=4, linewidth=2)


ax1.set_ylabel(r'Absorbance (562 nm)', size=20)
ax1.set_xlabel(r'Time (min)', size=20)
plt.legend(['50$^\circ$C Heat','8 mM $CdSO_4$','30 mM $K_3Fe(CN)_6$'], frameon=False)
plt.legend(bbox_to_anchor=(1.38, 1), loc='upper right', borderaxespad=0, fontsize=18)
plt.ylim(0,3)
ax1.tick_params(axis='x', labelsize=18)
ax1.tick_params(axis='y', labelsize=18)

fig.savefig('Viability_Other stressors.png', dpi=500, bbox_inches='tight')

Section S4 - Stressor blots and thioredoxin redox charge analyses

Stressor time-course experiments were carried out on Schizosaccharomyces pombe (JB35 cells, FLAG-tagged Trx1) and redox western blotting analysis was used to analyze the samples.

Stressors :

Control - No stress

Hydrogen peroxide (H2O2) - 100, 300, 500 & 1250 $\mu$M

Heat - 50$^\circ$C

Cadmium sulfate (CdSO4) - 8 mM

Potassium ferricynaide (K3Fe(CN)6) - 30 mM

4.1 No stress controls

Western blot images

In [42]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('No stress_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('No stress_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('No stress_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

No stress control - Analysis of oxidized and reduced bands

In [19]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\No stress control.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\No stress control.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\No stress control.csv')

No_stress = pd.read_csv('No stress control.csv')

No_stress['R1_Red_Total'] = No_stress.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = No_stress.pop(col_name1)
No_stress.insert(3, col_name1, first_col)

No_stress['R2_Red_Total'] = No_stress.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = No_stress.pop(col_name2)
No_stress.insert(7, col_name2, second_col)

No_stress['R3_Red_Total'] = No_stress.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = No_stress.pop(col_name3)
No_stress.insert(11, col_name3, third_col)

No_stress["R1_Red_Total/(R1_Total Trx)"] = No_stress['R1_Red_Total'].div((No_stress['R1_Red_Total'])+(No_stress['R1_Ox']))

No_stress["R2_Red_Total/(R2_Total Trx)"] = No_stress['R2_Red_Total'].div((No_stress['R2_Red_Total'])+(No_stress['R2_Ox']))

No_stress["R3_Red_Total/(R3_Total Trx)"] = No_stress['R3_Red_Total'].div((No_stress['R3_Red_Total'])+(No_stress['R3_Ox']))

No_stress['Average_Red_Total/Total_Trx'] = No_stress.iloc[:, [13,14,15]].mean(axis=1)

No_stress['Std error for Trx redox charge'] = No_stress.iloc[:, [13,14,15]].sem(axis=1)

No_stress
Out[19]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 18371.690 11005.953 29377.643 6465.539 20196.711 13988.317 34185.028 12254.640 15722.560 4178.439 19900.999 4540.790 0.819616 0.736117 0.814220 0.789984 0.026979
1 1 11920.497 13910.255 25830.752 6200.619 20312.518 19516.882 39829.400 13325.246 18500.024 5571.740 24071.764 2671.326 0.806420 0.749312 0.900112 0.818615 0.043957
2 5 18385.933 16617.033 35002.966 10460.861 15328.882 7443.347 22772.229 10730.468 20669.832 7053.497 27723.329 5070.033 0.769908 0.679713 0.845395 0.765005 0.047891
3 10 15753.811 15154.326 30908.137 11893.154 16164.196 7046.276 23210.472 7046.640 19484.903 4600.912 24085.815 1621.083 0.722131 0.767108 0.936940 0.808726 0.065408
4 20 15835.912 8656.083 24491.995 8968.761 17265.225 9865.083 27130.308 7557.933 18491.983 5079.619 23571.602 3227.962 0.731962 0.782118 0.879552 0.797877 0.043328
5 40 17585.690 11897.790 29483.480 11194.640 18527.225 11908.933 30436.158 6307.397 15755.903 7843.447 23599.350 3275.841 0.724799 0.828340 0.878109 0.810416 0.045155
6 60 20131.083 12718.326 32849.409 16725.953 17110.761 10376.569 27487.330 10063.903 20263.530 12626.690 32890.220 4974.933 0.662616 0.731995 0.868614 0.754408 0.060513

4.2 Hydrogen peroxide (100 $\mu$M)

Western blot images

In [44]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('100uM_H2O2_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('100uM_H2O2_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('100uM_H2O2_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

100 𝜇M Hydrogen peroxide - Analysis of oxidized and reduced bands

In [20]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\100 uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\100 uM H2O2.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\100 uM H2O2.csv')

H2O2_100uM = pd.read_csv('100 uM H2O2.csv')

H2O2_100uM['R1_Red_Total'] = H2O2_100uM.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = H2O2_100uM.pop(col_name1)
H2O2_100uM.insert(3, col_name1, first_col)

H2O2_100uM['R2_Red_Total'] = H2O2_100uM.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = H2O2_100uM.pop(col_name2)
H2O2_100uM.insert(7, col_name2, second_col)

H2O2_100uM['R3_Red_Total'] = H2O2_100uM.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = H2O2_100uM.pop(col_name3)
H2O2_100uM.insert(11, col_name3, third_col)

H2O2_100uM["R1_Red_Total/(R1_Total Trx)"] = H2O2_100uM['R1_Red_Total'].div((H2O2_100uM['R1_Red_Total'])+(H2O2_100uM['R1_Ox']))

H2O2_100uM["R2_Red_Total/(R2_Total Trx)"] = H2O2_100uM['R2_Red_Total'].div((H2O2_100uM['R2_Red_Total'])+(H2O2_100uM['R2_Ox']))

H2O2_100uM["R3_Red_Total/(R3_Total Trx)"] = H2O2_100uM['R3_Red_Total'].div((H2O2_100uM['R3_Red_Total'])+(H2O2_100uM['R3_Ox']))

H2O2_100uM['Average_Red_Total/Total_Trx'] = H2O2_100uM.iloc[:, [13,14,15]].mean(axis=1)

H2O2_100uM['Std error for Trx redox charge'] = H2O2_100uM.iloc[:, [13,14,15]].sem(axis=1)

H2O2_100uM
Out[20]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 21176.761 7525.368 28702.129 842.790 13096.518 7848.447 20944.965 214.284 18220.317 13797.388 32017.705 2503.125 0.971474 0.989873 0.927489 0.962946 0.018507
1 1 6502.719 3293.891 9796.610 10317.510 3578.648 3085.184 6663.832 8976.388 1709.062 2561.598 4270.660 6310.187 0.487051 0.426070 0.403622 0.438914 0.024926
2 5 9721.719 5873.719 15595.438 9535.903 4689.184 3900.891 8590.075 3612.669 10699.225 8394.933 19094.158 17872.208 0.620557 0.703946 0.516528 0.613677 0.054212
3 10 9422.497 6521.255 15943.752 5697.439 10851.861 9337.790 20189.651 11648.983 6261.690 4202.912 10464.602 1793.690 0.736732 0.634124 0.853675 0.741510 0.063424
4 20 12256.376 6772.841 19029.217 569.355 13260.719 10000.083 23260.802 366.042 15496.317 14457.347 29953.664 7934.024 0.970949 0.984507 0.790591 0.915349 0.062502
5 40 12433.154 10976.912 23410.066 652.548 14774.903 14192.933 28967.836 560.284 17796.225 11223.882 29020.107 1702.004 0.972881 0.981025 0.944600 0.966169 0.011038
6 60 15943.740 11524.669 27468.409 638.527 12158.175 17310.569 29468.744 365.698 19265.418 16868.175 36133.593 4074.560 0.977282 0.987742 0.898663 0.954563 0.028112

4.3 Hydrogen peroxide (300 $\mu$M)

Western blot images

In [46]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('300uM_H2O2_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('300uM_H2O2_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('300uM_H2O2_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

300 𝜇M Hydrogen peroxide - Analysis of oxidized and reduced bands

In [21]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\300 uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\300 uM H2O2.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\300 uM H2O2.csv')

H2O2_300uM = pd.read_csv('300 uM H2O2.csv')

H2O2_300uM['R1_Red_Total'] = H2O2_300uM.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = H2O2_300uM.pop(col_name1)
H2O2_300uM.insert(3, col_name1, first_col)

H2O2_300uM['R2_Red_Total'] = H2O2_300uM.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = H2O2_300uM.pop(col_name2)
H2O2_300uM.insert(7, col_name2, second_col)

H2O2_300uM['R3_Red_Total'] = H2O2_300uM.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = H2O2_300uM.pop(col_name3)
H2O2_300uM.insert(11, col_name3, third_col)

H2O2_300uM["R1_Red_Total/(R1_Total Trx)"] = H2O2_300uM['R1_Red_Total'].div((H2O2_300uM['R1_Red_Total'])+(H2O2_300uM['R1_Ox']))

H2O2_300uM["R2_Red_Total/(R2_Total Trx)"] = H2O2_300uM['R2_Red_Total'].div((H2O2_300uM['R2_Red_Total'])+(H2O2_300uM['R2_Ox']))

H2O2_300uM["R3_Red_Total/(R3_Total Trx)"] = H2O2_300uM['R3_Red_Total'].div((H2O2_300uM['R3_Red_Total'])+(H2O2_300uM['R3_Ox']))

H2O2_300uM['Average_Red_Total/Total_Trx'] = H2O2_300uM.iloc[:, [13,14,15]].mean(axis=1)

H2O2_300uM['Std error for Trx redox charge'] = H2O2_300uM.iloc[:, [13,14,15]].sem(axis=1)

H2O2_300uM
Out[21]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 15900.296 14581.569 30481.865 67.313 22997.054 24298.782 47295.836 3727.054 13344.045 13694.409 27038.454 1934.782 0.997797 0.926953 0.933222 0.952657 0.022642
1 1 13881.983 16373.296 30255.279 11010.468 13388.045 13922.489 27310.534 8540.631 19488.205 13738.326 33226.531 4141.640 0.733181 0.761775 0.889167 0.794708 0.047945
2 5 16212.690 13494.175 29706.865 782.891 18502.267 20641.790 39144.057 2825.811 23604.104 21565.397 45169.501 4588.690 0.974323 0.932670 0.907780 0.938258 0.019411
3 10 17530.468 17193.640 34724.108 1633.205 15255.983 16771.690 32027.673 2570.033 23719.983 23639.447 47359.430 4266.397 0.955079 0.925717 0.917359 0.932718 0.011438
4 20 19350.740 20474.447 39825.187 3919.004 16179.711 19748.447 35928.158 3293.539 21866.861 20723.205 42590.066 5076.953 0.910411 0.916028 0.893491 0.906643 0.006773
5 40 17943.619 17363.397 35307.016 19544.125 15874.075 19613.246 35487.321 21279.903 18941.033 17260.326 36201.359 15880.882 0.643688 0.625138 0.695081 0.654635 0.020920
6 60 21780.175 22418.619 44198.794 5996.610 17890.619 23504.640 41395.259 8442.731 28010.347 28049.175 56059.522 10946.874 0.880535 0.830596 0.836629 0.849254 0.015737

4.4 Hydrogen peroxide (500 $\mu$M)

Western blot images

In [48]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('500uM_H2O2_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('500uM_H2O2_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('500uM_H2O2_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

500 𝜇M Hydrogen peroxide - Analysis of oxidized and reduced bands

In [22]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\500 uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\500 uM H2O2.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\500 uM H2O2.csv')

H2O2_500uM = pd.read_csv('500 uM H2O2.csv')

H2O2_500uM['R1_Red_Total'] = H2O2_500uM.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = H2O2_500uM.pop(col_name1)
H2O2_500uM.insert(3, col_name1, first_col)

H2O2_500uM['R2_Red_Total'] = H2O2_500uM.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = H2O2_500uM.pop(col_name2)
H2O2_500uM.insert(7, col_name2, second_col)

H2O2_500uM['R3_Red_Total'] = H2O2_500uM.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = H2O2_500uM.pop(col_name3)
H2O2_500uM.insert(11, col_name3, third_col)

H2O2_500uM["R1_Red_Total/(R1_Total Trx)"] = H2O2_500uM['R1_Red_Total'].div((H2O2_500uM['R1_Red_Total'])+(H2O2_500uM['R1_Ox']))

H2O2_500uM["R2_Red_Total/(R2_Total Trx)"] = H2O2_500uM['R2_Red_Total'].div((H2O2_500uM['R2_Red_Total'])+(H2O2_500uM['R2_Ox']))

H2O2_500uM["R3_Red_Total/(R3_Total Trx)"] = H2O2_500uM['R3_Red_Total'].div((H2O2_500uM['R3_Red_Total'])+(H2O2_500uM['R3_Ox']))

H2O2_500uM['Average_Red_Total/Total_Trx'] = H2O2_500uM.iloc[:, [13,14,15]].mean(axis=1)

H2O2_500uM['Std error for Trx redox charge'] = H2O2_500uM.iloc[:, [13,14,15]].sem(axis=1)

H2O2_500uM
Out[22]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 20672.480 19764.480 40436.960 156.042 18572.861 14590.033 33162.894 2655.083 14524.246 9937.874 24462.120 431.506 0.996156 0.925873 0.982666 0.968232 0.021534
1 1 15264.326 11304.033 26568.359 3256.619 15450.497 6535.447 21985.944 1911.376 10918.175 12862.276 23780.451 8892.347 0.890809 0.920017 0.727836 0.846221 0.059790
2 5 15104.376 14108.447 29212.823 2012.790 13848.882 15403.154 29252.036 6683.397 13129.439 14112.882 27242.321 5710.983 0.935540 0.814017 0.826695 0.858751 0.038569
3 10 11987.912 6480.790 18468.702 3079.326 14896.497 7602.790 22499.287 2471.497 18589.711 12346.518 30936.229 2036.589 0.857095 0.901024 0.938234 0.898785 0.023450
4 20 16170.083 13470.083 29640.166 2680.861 8041.397 7961.569 16002.966 73.728 19533.054 22061.589 41594.643 8660.317 0.917055 0.995414 0.827672 0.913381 0.048458
5 40 13543.497 9832.033 23375.530 3915.903 13606.518 16509.205 30115.723 10121.966 21214.953 10739.782 31954.735 14307.004 0.856515 0.748446 0.690738 0.765233 0.048586
6 60 13490.397 10170.861 23661.258 13764.731 11315.933 11870.962 23186.895 22175.681 15303.104 10694.054 25997.158 9158.125 0.632215 0.511146 0.739495 0.627619 0.065959

4.5 Hydrogen peroxide (1250 $\mu$M)

Western blot images

In [50]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('1250uM_H2O2_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('1250uM_H2O2_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('1250uM_H2O2_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

1250 𝜇M Hydrogen peroxide - Analysis of oxidized and reduced bands

In [23]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\1250 uM H2O2.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\1250 uM H2O2.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\1250 uM H2O2.csv')

H2O2_1250uM = pd.read_csv('1250 uM H2O2.csv')

H2O2_1250uM['R1_Red_Total'] = H2O2_1250uM.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = H2O2_1250uM.pop(col_name1)
H2O2_1250uM.insert(3, col_name1, first_col)

H2O2_1250uM['R2_Red_Total'] = H2O2_1250uM.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = H2O2_1250uM.pop(col_name2)
H2O2_1250uM.insert(7, col_name2, second_col)

H2O2_1250uM['R3_Red_Total'] = H2O2_1250uM.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = H2O2_1250uM.pop(col_name3)
H2O2_1250uM.insert(11, col_name3, third_col)

H2O2_1250uM["R1_Red_Total/(R1_Total Trx)"] = H2O2_1250uM['R1_Red_Total'].div((H2O2_1250uM['R1_Red_Total'])+(H2O2_1250uM['R1_Ox']))

H2O2_1250uM["R2_Red_Total/(R2_Total Trx)"] = H2O2_1250uM['R2_Red_Total'].div((H2O2_1250uM['R2_Red_Total'])+(H2O2_1250uM['R2_Ox']))

H2O2_1250uM["R3_Red_Total/(R3_Total Trx)"] = H2O2_1250uM['R3_Red_Total'].div((H2O2_1250uM['R3_Red_Total'])+(H2O2_1250uM['R3_Ox']))

H2O2_1250uM['Average_Red_Total/Total_Trx'] = H2O2_1250uM.iloc[:, [13,14,15]].mean(axis=1)

H2O2_1250uM['Std error for Trx redox charge'] = H2O2_1250uM.iloc[:, [13,14,15]].sem(axis=1)

H2O2_1250uM
Out[23]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 11673.196 5290.962 16964.158 2447.832 21030.832 23851.104 44881.936 10216.761 26301.447 21034.154 47335.601 2449.983 0.873901 0.814573 0.950789 0.879755 0.039431
1 1 20228.296 16396.104 36624.400 3518.267 17952.276 22276.711 40228.987 14579.681 22457.276 23018.569 45475.845 5610.004 0.912356 0.733990 0.890185 0.845510 0.056126
2 5 15205.004 7403.347 22608.351 4710.125 17089.489 18179.175 35268.664 8454.004 25167.740 23787.861 48955.601 2867.752 0.827585 0.806645 0.944663 0.859631 0.042944
3 10 18467.983 9609.326 28077.309 2130.995 20847.246 19086.589 39933.835 10989.690 16957.004 17282.276 34239.280 3333.225 0.929457 0.784192 0.911286 0.874978 0.045695
4 20 19014.146 9324.740 28338.886 9976.995 18360.790 15624.397 33985.187 8442.225 5412.740 8360.225 13772.965 4906.004 0.739612 0.801020 0.737351 0.759328 0.020856
5 40 15893.459 13209.882 29103.341 1542.853 23058.359 22439.953 45498.312 15610.439 5758.790 3953.205 9711.995 8872.296 0.949656 0.744547 0.522592 0.738931 0.123315
6 60 20861.702 18061.033 38922.735 7113.681 18949.267 15774.317 34723.584 10791.175 4485.619 5009.104 9494.723 4344.974 0.845477 0.762908 0.686050 0.764812 0.046033

4.6 Heat (50$^\circ$C)

Western blot images

In [52]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Heat_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Heat_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Heat_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

50$^\circ$C Heat - Analysis of oxidized and reduced bands

In [24]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Heat.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Heat.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Heat.csv')

Heat = pd.read_csv('Heat.csv')

Heat['R1_Red_Total'] = Heat.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = Heat.pop(col_name1)
Heat.insert(3, col_name1, first_col)

Heat['R2_Red_Total'] = Heat.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = Heat.pop(col_name2)
Heat.insert(7, col_name2, second_col)

Heat['R3_Red_Total'] = Heat.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = Heat.pop(col_name3)
Heat.insert(11, col_name3, third_col)

Heat["R1_Red_Total/(R1_Total Trx)"] = Heat['R1_Red_Total'].div((Heat['R1_Red_Total'])+(Heat['R1_Ox']))

Heat["R2_Red_Total/(R2_Total Trx)"] = Heat['R2_Red_Total'].div((Heat['R2_Red_Total'])+(Heat['R2_Ox']))

Heat["R3_Red_Total/(R3_Total Trx)"] = Heat['R3_Red_Total'].div((Heat['R3_Red_Total'])+(Heat['R3_Ox']))

Heat['Average_Red_Total/Total_Trx'] = Heat.iloc[:, [13,14,15]].mean(axis=1)

Heat['Std error for Trx redox charge'] = Heat.iloc[:, [13,14,15]].sem(axis=1)

Heat
Out[24]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 17493.790 13674.225 31168.015 3331.347 12376.497 13979.912 26356.409 3951.033 17330.397 14604.359 31934.756 12652.773 0.903437 0.869635 0.716226 0.829766 0.057603
1 1 17178.761 12499.740 29678.501 4016.033 19027.054 19873.447 38900.501 11029.225 13861.397 11701.962 25563.359 1780.477 0.880811 0.779105 0.934886 0.864934 0.045665
2 5 16838.083 9275.376 26113.459 1682.548 10342.426 13372.426 23714.852 1110.790 17092.782 14310.711 31403.493 2074.983 0.939468 0.955256 0.938020 0.944248 0.005520
3 10 15274.376 12626.255 27900.631 4306.205 8860.095 14973.439 23833.534 2942.205 18533.933 9486.347 28020.280 6274.225 0.866295 0.890117 0.817049 0.857820 0.021514
4 20 17336.376 9586.255 26922.631 3806.326 10631.731 18943.681 29575.412 10526.033 18351.004 11337.347 29688.351 1189.497 0.876132 0.737515 0.961477 0.858375 0.065259
5 40 11995.125 10279.447 22274.572 8471.841 12974.640 18540.004 31514.644 11859.912 20367.690 8493.468 28861.158 5476.104 0.724461 0.726570 0.840520 0.763850 0.038340
6 60 9858.903 9131.569 18990.472 7854.690 5157.397 11568.882 16726.279 9374.983 19964.175 11589.175 31553.350 8886.953 0.707408 0.640823 0.780245 0.709492 0.040261

4.7 Cadmium sulfate (8 mM)

Western blot images

In [54]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cadmium_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cadmium_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cadmium_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

8 mM Cadmium sulfate - Analysis of oxidized and reduced bands

In [25]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Cadmium.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Cadmium.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Cadmium.csv')

Cadmium = pd.read_csv('Cadmium.csv')

Cadmium['R1_Red_Total'] = Cadmium.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = Cadmium.pop(col_name1)
Cadmium.insert(3, col_name1, first_col)

Cadmium['R2_Red_Total'] = Cadmium.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = Cadmium.pop(col_name2)
Cadmium.insert(7, col_name2, second_col)

Cadmium['R3_Red_Total'] = Cadmium.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = Cadmium.pop(col_name3)
Cadmium.insert(11, col_name3, third_col)

Cadmium["R1_Red_Total/(R1_Total Trx)"] = Cadmium['R1_Red_Total'].div((Cadmium['R1_Red_Total'])+(Cadmium['R1_Ox']))

Cadmium["R2_Red_Total/(R2_Total Trx)"] = Cadmium['R2_Red_Total'].div((Cadmium['R2_Red_Total'])+(Cadmium['R2_Ox']))

Cadmium["R3_Red_Total/(R3_Total Trx)"] = Cadmium['R3_Red_Total'].div((Cadmium['R3_Red_Total'])+(Cadmium['R3_Ox']))

Cadmium['Average_Red_Total/Total_Trx'] = Cadmium.iloc[:, [13,14,15]].mean(axis=1)

Cadmium['Std error for Trx redox charge'] = Cadmium.iloc[:, [13,14,15]].sem(axis=1)

Cadmium
Out[25]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 17688.790 17547.782 35236.572 1715.305 19228.376 10305.376 29533.752 1601.548 16885.175 8766.380 25651.555 1029.154 0.953580 0.948562 0.961427 0.954523 0.003744
1 1 17208.083 12133.669 29341.752 1882.225 17443.376 5854.376 23297.752 3687.933 19337.225 11259.640 30596.865 7405.468 0.939719 0.863337 0.805131 0.869396 0.038970
2 5 17583.912 13121.376 30705.288 8415.225 18918.154 5967.619 24885.773 14336.619 18632.640 9977.539 28610.179 12946.660 0.784890 0.634479 0.688459 0.702609 0.043993
3 10 17532.083 10473.376 28005.459 4893.983 16403.569 6270.033 22673.602 4438.518 13099.933 2207.861 15307.794 2067.154 0.851244 0.836290 0.881027 0.856187 0.013149
4 20 18154.569 10740.497 28895.066 5174.740 15853.205 4004.376 19857.581 3898.891 17704.933 6031.518 23736.451 3928.882 0.848114 0.835881 0.857985 0.847327 0.006393
5 40 10251.548 7392.669 17644.217 2833.012 10527.033 3512.962 14039.995 1415.255 16744.933 4039.740 20784.673 8517.054 0.861651 0.908429 0.709333 0.826471 0.060106
6 60 20430.033 8626.548 29056.581 4386.447 6423.255 2300.770 8724.025 3409.447 18447.953 7234.690 25682.643 8499.317 0.868838 0.719005 0.751351 0.779731 0.045521

4.8 Potassium ferricyanide (30 mM)

Western blot images

In [56]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cyanide_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cyanide_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cyanide_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

30 mM Potassium ferricyanide - Analysis of oxidized and reduced bands

In [26]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Cyanide.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Cyanide.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Cyanide.csv')

Cyanide = pd.read_csv('Cyanide.csv')

Cyanide['R1_Red_Total'] = Cyanide.iloc[:, [1,2]].sum(axis=1)
col_name1="R1_Red_Total"
first_col = Cyanide.pop(col_name1)
Cyanide.insert(3, col_name1, first_col)

Cyanide['R2_Red_Total'] =Cyanide.iloc[:, [5,6]].sum(axis=1)
col_name2="R2_Red_Total"
second_col = Cyanide.pop(col_name2)
Cyanide.insert(7, col_name2, second_col)

Cyanide['R3_Red_Total'] = Cyanide.iloc[:, [9,10]].sum(axis=1)
col_name3="R3_Red_Total"
third_col = Cyanide.pop(col_name3)
Cyanide.insert(11, col_name3, third_col)

Cyanide["R1_Red_Total/(R1_Total Trx)"] = Cyanide['R1_Red_Total'].div((Cyanide['R1_Red_Total'])+(Cyanide['R1_Ox']))

Cyanide["R2_Red_Total/(R2_Total Trx)"] = Cyanide['R2_Red_Total'].div((Cyanide['R2_Red_Total'])+(Cyanide['R2_Ox']))

Cyanide["R3_Red_Total/(R3_Total Trx)"] = Cyanide['R3_Red_Total'].div((Cyanide['R3_Red_Total'])+(Cyanide['R3_Ox']))

Cyanide['Average_Red_Total/Total_Trx'] = Cyanide.iloc[:, [13,14,15]].mean(axis=1)

Cyanide['Std error for Trx redox charge'] = Cyanide.iloc[:, [13,14,15]].sem(axis=1)

Cyanide
Out[26]:
Time (min) R1_RedA R1_RedB R1_Red_Total R1_Ox R2_RedA R2_RedB R2_Red_Total R2_Ox R3_RedA R3_RedB R3_Red_Total R3_Ox R1_Red_Total/(R1_Total Trx) R2_Red_Total/(R2_Total Trx) R3_Red_Total/(R3_Total Trx) Average_Red_Total/Total_Trx Std error for Trx redox charge
0 0 20783.489 13630.740 34414.229 2496.134 14544.255 17686.447 32230.702 1828.477 14561.347 14875.480 29436.827 1177.648 0.932373 0.946315 0.961533 0.946740 0.008420
1 1 14813.669 8270.497 23084.166 5845.983 15903.447 13931.276 29834.723 5941.811 18137.640 12067.933 30205.573 10406.853 0.797928 0.833919 0.743752 0.791866 0.026205
2 5 14465.376 12153.255 26618.631 8154.669 13642.962 19258.083 32901.045 6643.054 17922.225 11371.347 29293.572 13452.660 0.765491 0.832009 0.685290 0.760930 0.042415
3 10 12061.104 5352.861 17413.965 3064.447 10397.326 17373.640 27770.966 2084.326 13752.811 4826.397 18579.208 5361.054 0.850357 0.930186 0.776065 0.852203 0.044500
4 20 15847.569 13193.104 29040.673 9883.790 9465.790 10144.205 19609.995 1307.184 17037.518 8787.518 25825.036 3341.740 0.746078 0.937507 0.885426 0.856337 0.057143
5 40 16139.569 15567.154 31706.723 6789.548 10295.790 20050.569 30346.359 6192.376 18238.518 6997.690 25236.208 13992.368 0.823631 0.830526 0.643312 0.765823 0.061288
6 60 18565.669 12961.912 31527.581 16311.497 8443.861 8782.246 17226.107 2035.296 18250.104 7364.326 25614.430 6943.095 0.659034 0.894333 0.786744 0.780037 0.068008

4.9 Thioredoxin redox charge plotted against time for all stressors

In [52]:
fig, ax1 = plt.subplots(figsize=(10,7))

x1 = No_stress['Time (min)']
y1 = No_stress['Average_Red_Total/Total_Trx']
y1error = No_stress['Std error for Trx redox charge'] 
x1error = No_stress['Std error for Trx redox charge']

plt.plot(x1,y1, color='royalblue', marker= 'o', label='No stress control', linewidth=4, markersize=10)

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='royalblue', capsize=4, linewidth=2)

ax1.set_ylabel(r'Trx redox charge', size=20)
ax1.set_xlabel(r'Time (min)', size=20)
plt.legend(['No stress control'], frameon=False)
plt.legend(bbox_to_anchor=(1.36, 1), loc='upper right', borderaxespad=0, fontsize=18)
plt.ylim(0.3,1)
ax1.tick_params(axis='x', labelsize=18)
ax1.tick_params(axis='y', labelsize=18)

fig.savefig('Trx redox charge_No stress control.png', dpi=500, bbox_inches='tight')
In [51]:
fig, ax1 = plt.subplots(figsize=(10,7))
ax2=ax1.twinx()

ax1 = No_stress.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'royalblue', ax=ax1, figsize=(9,6), marker = 'o', linewidth=4, markersize=10)
ax1.set_ylabel('Trx redox charge', color = 'royalblue', fontsize=20)
ax1.set_ylim(0.5,1)
ax1.tick_params(axis = 'y', colors = 'royalblue', labelsize=18)
ax2.spines['left'].set_color('royalblue')

x1 = No_stress['Time (min)']
y1 = No_stress['Average_Red_Total/Total_Trx']
y1error = No_stress['Std error for Trx redox charge'] 
x1error = No_stress['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='royalblue', capsize=4, linewidth=2)

ax2 = Viability_no_stress.plot('Time (min)','Average_OD', color = 'green', ax=ax2, marker = 'o', linewidth=4, markersize=10)
ax2.set_ylabel('Absorbance (562 nm)', color = 'green', fontsize=20)
ax2.set_ylim(1,2)
ax2.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax2.spines['right'].set_color('green')

x2 = Viability_no_stress['Time (min)']
y2 = Viability_no_stress['Average_OD']
y2error = Viability_no_stress['Std error of average OD'] 
x2error = Viability_no_stress['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='green', capsize=4, linewidth=2)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=20)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()

plt.plot()
fig.savefig('Trx redox charge & Viability double y axis_No stress control.png', dpi=500, bbox_inches='tight')
In [27]:
fig, ax1 = plt.subplots(figsize=(10,7))

x2 = H2O2_100uM['Time (min)']
y2 = H2O2_100uM['Average_Red_Total/Total_Trx']
y2error = H2O2_100uM['Std error for Trx redox charge'] 
x2error = H2O2_100uM['Std error for Trx redox charge']

x3 = H2O2_300uM['Time (min)']
y3 = H2O2_300uM['Average_Red_Total/Total_Trx']
y3error = H2O2_300uM['Std error for Trx redox charge'] 
x3error = H2O2_300uM['Std error for Trx redox charge']

x4 = H2O2_500uM['Time (min)']
y4 = H2O2_500uM['Average_Red_Total/Total_Trx']
y4error = H2O2_500uM['Std error for Trx redox charge'] 
x4error = H2O2_500uM['Std error for Trx redox charge']

x5 = H2O2_1250uM['Time (min)']
y5 = H2O2_1250uM['Average_Red_Total/Total_Trx']
y5error = H2O2_1250uM['Std error for Trx redox charge'] 
x5error = H2O2_1250uM['Std error for Trx redox charge']

plt.plot(x2,y2, color='darkorange', marker= '>', label=r'100 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)
plt.plot(x3,y3, color='seagreen', marker= 's', label=r'300 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)
plt.plot(x4,y4, color='crimson', marker= 'p', label=r'500 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)
plt.plot(x5,y5, color='darkviolet', marker= '*', label=r'1250 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=4, markersize=10)

ax1.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='darkorange', capsize=4, linewidth=2)
ax1.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='seagreen', capsize=4, linewidth=2)
ax1.errorbar(x4,y4,yerr=y4error,xerr=x4error, color='crimson', capsize=4, linewidth=2)
ax1.errorbar(x5,y5,yerr=y5error,xerr=x5error, color='darkviolet', capsize=4, linewidth=2)

ax1.set_ylabel(r'Trx redox charge', size=20)
ax1.set_xlabel(r'Time (min)', size=20)
plt.legend(['100 $\mu$M $H_2O_2$','300 $\mu$M $H_2O_2$','500 $\mu$M $H_2O_2$','1250 $\mu$M $H_2O_2$'], frameon=False)
plt.legend(bbox_to_anchor=(1.33, 1), loc='upper right', borderaxespad=0, fontsize=18)
plt.ylim(0.3,1)
ax1.tick_params(axis='x', labelsize=18)
ax1.tick_params(axis='y', labelsize=18)

fig.savefig('Trx redox charge_H2O2 stressors.png', dpi=500, bbox_inches='tight')
In [28]:
fig, ax1 = plt.subplots(figsize=(10,7))

x2 = Heat['Time (min)']
y2 = Heat['Average_Red_Total/Total_Trx']
y2error = Heat['Std error for Trx redox charge'] 
x2error = Heat['Std error for Trx redox charge']

x3 = Cadmium['Time (min)']
y3 = Cadmium['Average_Red_Total/Total_Trx']
y3error = Cadmium['Std error for Trx redox charge'] 
x3error = Cadmium['Std error for Trx redox charge']

x4 = Cyanide['Time (min)']
y4 = Cyanide['Average_Red_Total/Total_Trx']
y4error = Cyanide['Std error for Trx redox charge'] 
x4error = Cyanide['Std error for Trx redox charge']

plt.plot(x2,y2, color='magenta', marker= 'H', label='50$^\circ$C Heat', linewidth=4, markersize=10)
plt.plot(x3,y3, color='limegreen', marker= 'D', label=r'8 mM ${\rm CdSO_4}$', linewidth=4, markersize=10)
plt.plot(x4,y4, color='deepskyblue', marker= 'X', label=r'30 mM ${\rm K_3Fe(CN)_6}$', linewidth=4, markersize=10)

ax1.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='magenta', capsize=4, linewidth=2)
ax1.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='limegreen', capsize=4, linewidth=2)
ax1.errorbar(x4,y4,yerr=y4error,xerr=x4error, color='deepskyblue', capsize=4, linewidth=2)

ax1.set_ylabel(r'Trx redox charge', size=20)
ax1.set_xlabel(r'Time (min)', size=20)
plt.legend(['50$^\circ$C Heat','8 mM $CdSO_4$','30 mM $K_3Fe(CN)_6$'], frameon=False)
plt.legend(bbox_to_anchor=(1.38, 1), loc='upper right', borderaxespad=0, fontsize=18)
plt.ylim(0.3,1)
ax1.tick_params(axis='x', labelsize=18)
ax1.tick_params(axis='y', labelsize=18)

fig.savefig('Trx redox charge_Other stressors.png', dpi=500, bbox_inches='tight')

Section S5 - Thioredoxin redox charge and cell viability correlation plots

In [18]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats
from scipy.spatial import distance

plt.figure(figsize=(10,7))

x = No_stress['Average_Red_Total/Total_Trx'] 
y = Viability_no_stress['Average_OD']

print('No stress control')

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(x, y, seed=None) 
print(round(dcor, 3), pval)

xerr = No_stress['Std error for Trx redox charge']
yerr = Viability_no_stress['Std error of average OD']

plt.errorbar(x, y, xerr = No_stress['Std error for Trx redox charge'], yerr = Viability_no_stress['Std error of average OD'], fmt='o', color="royalblue", capsize = 4, label='No stress control', linewidth=2)
plt.scatter(x, y, s=100, color = 'royalblue')
plt.xlabel(r'Trx redox charge',size=20, color='black')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='black')
plt.legend(['No stress control'], frameon=False)
plt.legend(fontsize=18)
plt.xlim([0.3, 1])
plt.ylim([0, 3])

plt.xticks(fontsize=18)

plt.yticks(fontsize=18)


# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Correlation_No stress.png', dpi=500, bbox_inches='tight')
plt.show()
No stress control
Pearson correlation coefficient: -0.11510841313494169
P-value: 0.8058779247992393
Spearman correlation coefficient: -0.03571428571428572
P-value: 0.9394082054712856
Kendall correlation coefficient: -0.04761904761904762
P-value: 1.0
R-squared value: 0.01324994677444444
P-value: 0.8058779247992398
Slope: -1.3003547529507113
Intercept: 2.470358470731717
Std error: 5.018493426663052
Distance correlation, P-value
0.423 0.869
In [29]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats
from scipy.spatial import distance

plt.figure(figsize=(10,7))

print('No stress control')

corr, pvalue = scipy.stats.pearsonr(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

print('100 uM Hydrogen peroxide')

corr, pvalue = scipy.stats.pearsonr(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(H2O2_100uM['Average_Red_Total/Total_Trx'], Viability_100uM_H2O2['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

print('300 uM Hydrogen peroxide')

corr, pvalue = scipy.stats.pearsonr(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(H2O2_300uM['Average_Red_Total/Total_Trx'], Viability_300uM_H2O2['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

print('500 uM Hydrogen peroxide')

corr, pvalue = scipy.stats.pearsonr(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(H2O2_500uM['Average_Red_Total/Total_Trx'], Viability_500uM_H2O2['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

print('1250 uM Hydrogen peroxide')

corr, pvalue = scipy.stats.pearsonr(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(H2O2_1250uM['Average_Red_Total/Total_Trx'], Viability_1250uM_H2O2['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

plt.errorbar(No_stress['Average_Red_Total/Total_Trx'] , Viability_no_stress['Average_OD'], xerr = No_stress['Std error for Trx redox charge'], yerr = Viability_no_stress['Std error of average OD'], fmt='o', color='royalblue', capsize = 4, label='No stress control', linewidth=2)
plt.errorbar(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'], xerr = H2O2_100uM['Std error for Trx redox charge'], yerr = Viability_100uM_H2O2['Std error of average OD'], fmt='o', color='darkorange', capsize = 4, label=r'100 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)
plt.errorbar(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'], xerr = H2O2_300uM['Std error for Trx redox charge'], yerr = Viability_300uM_H2O2['Std error of average OD'], fmt='o', color='seagreen', capsize = 4, label=r'300 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)
plt.errorbar(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'], xerr = H2O2_500uM['Std error for Trx redox charge'], yerr = Viability_500uM_H2O2['Std error of average OD'], fmt='o', color='crimson', capsize = 4, label=r'500 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)
plt.errorbar(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'], xerr = H2O2_1250uM['Std error for Trx redox charge'], yerr = Viability_1250uM_H2O2['Std error of average OD'], fmt='o', color='darkviolet', capsize = 4, label=r'1250 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)

plt.scatter(No_stress['Average_Red_Total/Total_Trx'] , Viability_no_stress['Average_OD'], s=100, color = 'royalblue')
plt.scatter(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'], s=100, color = 'darkorange')
plt.scatter(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'], s=100, color = 'seagreen')
plt.scatter(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'], s=100, color = 'crimson')
plt.scatter(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'], s=100, color = 'darkviolet')

plt.xlabel(r'Trx redox charge',size=20, color='black')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='black')
plt.legend(loc='best', frameon=False)
plt.legend(fontsize=18)
plt.xlim([0.3, 1])
plt.ylim([0, 3])

plt.xticks(fontsize=18, color='black')

plt.yticks(fontsize=18,color='black')

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Correlation_H2O2_stressors.png', dpi=500, bbox_inches='tight')
plt.show()
No stress control
Pearson correlation coefficient: -0.11510841313494169
P-value: 0.8058779247992393
Spearman correlation coefficient: -0.03571428571428572
P-value: 0.9394082054712856
Kendall correlation coefficient: -0.04761904761904762
P-value: 1.0
R-squared value: 0.01324994677444444
P-value: 0.8058779247992398
Slope: -1.3003547529507113
Intercept: 2.470358470731717
Std error: 5.018493426663052
Distance correlation, P-value
0.423 0.881
100 uM Hydrogen peroxide
Pearson correlation coefficient: 0.7303646765577201
P-value: 0.06231565630277568
Spearman correlation coefficient: 0.7500000000000002
P-value: 0.05218140045705776
Kendall correlation coefficient: 0.6190476190476191
P-value: 0.06904761904761905
R-squared value: 0.5334325607632631
P-value: 0.06231565630277561
Slope: 0.7009184919418331
Intercept: 0.6291437575198765
Std error: 0.2931567973145667
Distance correlation, P-value
0.755 0.096
300 uM Hydrogen peroxide
Pearson correlation coefficient: 0.3601490992506782
P-value: 0.42746010552439284
Spearman correlation coefficient: 0.5357142857142858
P-value: 0.21521745567801273
Kendall correlation coefficient: 0.4285714285714286
P-value: 0.2388888888888889
R-squared value: 0.1297073736910749
P-value: 0.4274601055243923
Slope: 0.32787637458436725
Intercept: 0.5389916487662758
Std error: 0.3798179113239354
Distance correlation, P-value
0.592 0.376
500 uM Hydrogen peroxide
Pearson correlation coefficient: 0.5203014843680096
P-value: 0.23124289616067678
Spearman correlation coefficient: 0.3214285714285715
P-value: 0.4820720382996776
Kendall correlation coefficient: 0.23809523809523814
P-value: 0.5619047619047619
R-squared value: 0.27071363463555426
P-value: 0.2312428961606766
Slope: 1.160230370308101
Intercept: -0.4968222070099759
Std error: 0.8516344272078425
Distance correlation, P-value
0.594 0.273
1250 uM Hydrogen peroxide
Pearson correlation coefficient: 0.5083249556692649
P-value: 0.24406711822550098
Spearman correlation coefficient: 0.7500000000000002
P-value: 0.05218140045705776
Kendall correlation coefficient: 0.5238095238095238
P-value: 0.1361111111111111
R-squared value: 0.25839426055616027
P-value: 0.24406711822550084
Slope: 6.797731126396552
Intercept: -4.922100597766592
Std error: 5.150199949444058
Distance correlation, P-value
0.532 0.151
In [30]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats
from scipy.spatial import distance

plt.figure(figsize=(10,7))

print('No stress control')

corr, pvalue = scipy.stats.pearsonr(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(No_stress['Average_Red_Total/Total_Trx'], Viability_no_stress['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

print('Heat')

corr, pvalue = scipy.stats.pearsonr(Heat['Average_Red_Total/Total_Trx'] ,Viability_Heat['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

print('Cadmium sulfate')

corr, pvalue = scipy.stats.pearsonr(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(Cadmium['Average_Red_Total/Total_Trx'], Viability_Cadmium['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

print('Potassium ferricyanide')

corr, pvalue = scipy.stats.pearsonr(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'])
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'])
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'])
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'])
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'], seed=None) 
print(round(dcor, 3), pval)

plt.errorbar(No_stress['Average_Red_Total/Total_Trx'] , Viability_no_stress['Average_OD'], xerr = No_stress['Std error for Trx redox charge'], yerr = Viability_no_stress['Std error of average OD'], fmt='o', color='royalblue', capsize = 4, label='No stress control', linewidth=2)
plt.errorbar(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'], xerr = Heat['Std error for Trx redox charge'], yerr = Viability_Heat['Std error of average OD'], fmt='o', color='magenta', capsize = 4, label='50$^\circ$C Heat', linewidth=2)
plt.errorbar(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'], xerr = Cadmium['Std error for Trx redox charge'], yerr = Viability_Cadmium['Std error of average OD'], fmt='o', color='limegreen', capsize = 4, label=r'8 mM ${\rm CdSO_4}$', linewidth=2)
plt.errorbar(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'], xerr = Cyanide['Std error for Trx redox charge'], yerr = Viability_Cyanide['Std error of average OD'], fmt='o', color='deepskyblue', capsize = 4, label=r'30 mM ${\rm K_3Fe(CN)_6}$', linewidth=2)

plt.scatter(No_stress['Average_Red_Total/Total_Trx'] , Viability_no_stress['Average_OD'], s=100, color = 'royalblue')
plt.scatter(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'], s=100, color = 'magenta')
plt.scatter(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'], s=100, color = 'limegreen')
plt.scatter(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'], s=100, color = 'deepskyblue')


plt.xlabel(r'Trx redox charge',size=20, color='black')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='black')
plt.legend(loc='best', frameon=False)
plt.legend(fontsize=18)
plt.xlim([0.3, 1])
plt.ylim([0, 3])

plt.xticks(fontsize=18, color='black')

plt.yticks(fontsize=18,color='black')

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Correlation_Other_stressors.png', dpi=500, bbox_inches='tight')
plt.show()
No stress control
Pearson correlation coefficient: -0.11510841313494169
P-value: 0.8058779247992393
Spearman correlation coefficient: -0.03571428571428572
P-value: 0.9394082054712856
Kendall correlation coefficient: -0.04761904761904762
P-value: 1.0
R-squared value: 0.01324994677444444
P-value: 0.8058779247992398
Slope: -1.3003547529507113
Intercept: 2.470358470731717
Std error: 5.018493426663052
Distance correlation, P-value
0.423 0.88
Heat
Pearson correlation coefficient: 0.5698906597289749
P-value: 0.1816477811365806
Spearman correlation coefficient: 0.5714285714285715
P-value: 0.1802019889115274
Kendall correlation coefficient: 0.4285714285714286
P-value: 0.2388888888888889
R-squared value: 0.3247753640463264
P-value: 0.18164778113658028
Slope: 1.368127495337249
Intercept: -0.2479206108553026
Std error: 0.882214455102299
Distance correlation, P-value
0.714 0.128
Cadmium sulfate
Pearson correlation coefficient: 0.6370742884904135
P-value: 0.12384645441935348
Spearman correlation coefficient: 0.7142857142857144
P-value: 0.07134356146753759
Kendall correlation coefficient: 0.5238095238095238
P-value: 0.1361111111111111
R-squared value: 0.4058636490555667
P-value: 0.12384645441935328
Slope: 5.512882552132125
Intercept: -3.8950273744251636
Std error: 2.9829551424160363
Distance correlation, P-value
0.755 0.16
Potassium ferricyanide
Pearson correlation coefficient: 0.7638497536756613
P-value: 0.04561934653021032
Spearman correlation coefficient: 0.07142857142857144
P-value: 0.8790481931481541
Kendall correlation coefficient: 0.04761904761904762
P-value: 1.0
R-squared value: 0.5834664461903678
P-value: 0.045619346530210485
Slope: 5.064509646132516
Intercept: -2.9132661589266164
Std error: 1.9136805964625425
Distance correlation, P-value
0.796 0.135
In [32]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats
from scipy.spatial import distance

plt.figure(figsize=(12,9))

plt.errorbar(No_stress['Average_Red_Total/Total_Trx'] , Viability_no_stress['Average_OD'], xerr = No_stress['Std error for Trx redox charge'], yerr = Viability_no_stress['Std error of average OD'], fmt='o', color='royalblue', capsize = 4, label='No stress control', linewidth=2)
plt.errorbar(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'], xerr = H2O2_100uM['Std error for Trx redox charge'], yerr = Viability_100uM_H2O2['Std error of average OD'], fmt='o', color='darkorange', capsize = 4, label=r'100 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)
plt.errorbar(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'], xerr = H2O2_300uM['Std error for Trx redox charge'], yerr = Viability_300uM_H2O2['Std error of average OD'], fmt='o', color='seagreen', capsize = 4, label=r'300 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)
plt.errorbar(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'], xerr = H2O2_500uM['Std error for Trx redox charge'], yerr = Viability_500uM_H2O2['Std error of average OD'], fmt='o', color='crimson', capsize = 4, label=r'500 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)
plt.errorbar(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'], xerr = H2O2_1250uM['Std error for Trx redox charge'], yerr = Viability_1250uM_H2O2['Std error of average OD'], fmt='o', color='darkviolet', capsize = 4, label=r'1250 ${\rm \mu}$M ${\rm H_2O_2}$', linewidth=2)
plt.errorbar(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'], xerr = Heat['Std error for Trx redox charge'], yerr = Viability_Heat['Std error of average OD'], fmt='o', color='magenta', capsize = 4, label='50$^\circ$C Heat', linewidth=2)
plt.errorbar(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'], xerr = Cadmium['Std error for Trx redox charge'], yerr = Viability_Cadmium['Std error of average OD'], fmt='o', color='limegreen', capsize = 4, label=r'8 mM ${\rm CdSO_4}$', linewidth=2)
plt.errorbar(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'], xerr = Cyanide['Std error for Trx redox charge'], yerr = Viability_Cyanide['Std error of average OD'], fmt='o', color='deepskyblue', capsize = 4, label=r'30 mM ${\rm K_3Fe(CN)_6}$', linewidth=2)


plt.scatter(No_stress['Average_Red_Total/Total_Trx'] , Viability_no_stress['Average_OD'], s=100, color = 'royalblue')
plt.scatter(H2O2_100uM['Average_Red_Total/Total_Trx'] , Viability_100uM_H2O2['Average_OD'], s=100, color = 'darkorange')
plt.scatter(H2O2_300uM['Average_Red_Total/Total_Trx'] , Viability_300uM_H2O2['Average_OD'], s=100, color = 'seagreen')
plt.scatter(H2O2_500uM['Average_Red_Total/Total_Trx'] , Viability_500uM_H2O2['Average_OD'], s=100, color = 'crimson')
plt.scatter(H2O2_1250uM['Average_Red_Total/Total_Trx'] , Viability_1250uM_H2O2['Average_OD'], s=100, color = 'darkviolet')
plt.scatter(Heat['Average_Red_Total/Total_Trx'] , Viability_Heat['Average_OD'], s=100, color = 'magenta')
plt.scatter(Cadmium['Average_Red_Total/Total_Trx'] , Viability_Cadmium['Average_OD'], s=100, color = 'limegreen')
plt.scatter(Cyanide['Average_Red_Total/Total_Trx'] , Viability_Cyanide['Average_OD'], s=100, color = 'deepskyblue')

plt.xlabel(r'Trx redox charge',size=20, color='black')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='black')
plt.legend(loc='best', frameon=False)
plt.legend(fontsize=18)
plt.xlim([0.3, 1])
plt.ylim([0, 3])

plt.xticks(fontsize=18, color='black')

plt.yticks(fontsize=18,color='black')

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Correlation_All stressors.png', dpi=500, bbox_inches='tight')
plt.show()

Section S6 - Total protein (Ponceau S stain) analyses

6.1 No stress control

Ponceau S images (Total protein)

In [96]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('No stress_Ponceau_1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('No stress_Ponceau_2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('No stress_Ponceau_3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

No stress control - Ponceau S (Total protein) analysis

In [69]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\No stress_Ponceau.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\No stress_Ponceau.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\No stress_Ponceau.csv')

No_stress_Pon = pd.read_csv('No stress_Ponceau.csv')

No_stress_Pon["R1_Red_Total/(R1_Total protein)"] = (No_stress_Pon['R1_RedA'] + No_stress_Pon['R1_RedB']).div(No_stress_Pon['R1_Total_protein'])

No_stress_Pon["R2_Red_Total/(R2_Total protein)"] = (No_stress_Pon['R2_RedA'] + No_stress_Pon['R2_RedB']).div(No_stress_Pon['R2_Total_protein'])

No_stress_Pon["R3_Red_Total/(R3_Total potein)"] = (No_stress_Pon['R3_RedA'] + No_stress_Pon['R3_RedB']).div(No_stress_Pon['R3_Total_protein'])

No_stress_Pon['Average_Red_Total/Total_protein'] = No_stress_Pon.iloc[:, [10,11,12]].mean(axis=1)

No_stress_Pon['Std error for Red total Trx/Total protein'] = No_stress_Pon.iloc[:, [10,11,12]].sem(axis=1)

No_stress_Pon
Out[69]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 18371.690 11005.953 104112.699 20196.711 13988.317 87684.001 15722.560 4178.439 119220.578 0.282172 0.389866 0.166926 0.279655 0.064370
1 1 11920.497 13910.255 113116.599 20312.518 19516.882 88942.607 18500.024 5571.740 112836.699 0.228355 0.447810 0.213333 0.296499 0.075780
2 5 18385.933 16617.033 105295.456 15328.882 7443.347 99909.477 20669.832 7053.497 87972.749 0.332426 0.227929 0.315135 0.291830 0.032338
3 10 15753.811 15154.326 106045.264 16164.196 7046.276 95654.528 19484.903 4600.912 95231.800 0.291462 0.242649 0.252918 0.262343 0.014858
4 20 15835.912 8656.083 106298.749 17265.225 9865.083 82836.477 18491.983 5079.619 78124.649 0.230407 0.327516 0.301718 0.286547 0.029041
5 40 17585.690 11897.790 104899.850 18527.225 11908.933 84055.578 15755.903 7843.447 98610.950 0.281063 0.362096 0.239318 0.294159 0.036043
6 60 20131.083 12718.326 107883.992 17110.761 10376.569 74510.486 20263.530 12626.690 108635.729 0.304488 0.368906 0.302757 0.325384 0.021767
In [70]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = No_stress.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.5,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = No_stress['Time (min)']
y1 = No_stress['Average_Red_Total/Total_Trx']
y1error = No_stress['Std error for Trx redox charge'] 
x1error = No_stress['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_no_stress.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(1,2)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_no_stress['Time (min)']
y2 = Viability_no_stress['Average_OD']
y2error = Viability_no_stress['Std error of average OD'] 
x2error = Viability_no_stress['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = No_stress_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0.2,0.6)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = No_stress_Pon['Time (min)']
y3 = No_stress_Pon['Average_Red_Total/Total_protein']
y3error = No_stress_Pon['Std error for Red total Trx/Total protein'] 
x3error = No_stress_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('No stress control triple plot.png', dpi=500, bbox_inches='tight')
In [102]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = No_stress_Pon['Average_Red_Total/Total_protein'] 
y = No_stress['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = No_stress_Pon['Std error for Red total Trx/Total protein']
yerr = No_stress['Std error for Trx redox charge']

plt.errorbar(x, y, xerr = No_stress_Pon['Std error for Red total Trx/Total protein'], yerr = No_stress['Std error for Trx redox charge'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Trx redox charge',size=20, color='green')
plt.legend(['No stress control'], frameon=False)
plt.xlim([0, 0.5])
plt.ylim([0.5, 1])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: -0.574$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: -0.071$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: -0.048$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.330$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_No stress.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: -0.5743706826070729
P-value: 0.17745185388231932
Spearman correlation coefficient: -0.07142857142857144
P-value: 0.8790481931481541
Kendall correlation coefficient: -0.04761904761904762
P-value: 1.0
R-squared value: 0.329901681038515
P-value: 0.17745185388231907
Slope: -0.7264192573946958
Intercept: 1.003474926769294
Std error: 0.46299824690981217
In [71]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = No_stress_Pon['Average_Red_Total/Total_protein']
y = Viability_no_stress['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = No_stress_Pon['Std error for Red total Trx/Total protein']
yerr = Viability_no_stress['Std error of average OD']

plt.errorbar(x, y, xerr = No_stress_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_no_stress['Std error of average OD'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['No stress control'], frameon=False)
plt.xlim([0, 0.5])
plt.ylim([0, 2])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.457$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.500$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.429$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.209$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_No stress.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.4569929992790002
P-value: 0.3025911350965923
Spearman correlation coefficient: 0.5
P-value: 0.25316999510032273
Kendall correlation coefficient: 0.4285714285714286
P-value: 0.2388888888888889
R-squared value: 0.20884260139001634
P-value: 0.30259113509659225
Slope: 6.529191615293453
Intercept: -0.45916463783296324
Std error: 5.683244127465209

6.2 Hydrogen peroxide (100 $\mu$M)

Ponceau S images (Total protein)

In [105]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('100uM_H2O2_Pon1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('100uM_H2O2_Pon2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('100uM_H2O2_Pon3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

100 $\mu$M Hydrogen peroxide - Ponceau S (Total protein) analysis

In [72]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\100 uM H2O2 Pon.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\100 uM H2O2 Pon.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\100 uM H2O2 Pon.csv')

H2O2_100uM_Pon = pd.read_csv('100 uM H2O2 Pon.csv')

H2O2_100uM_Pon["R1_Red_Total/(R1_Total protein)"] = (H2O2_100uM_Pon['R1_RedA'] + H2O2_100uM_Pon['R1_RedB']).div(H2O2_100uM_Pon['R1_Total_protein'])

H2O2_100uM_Pon["R2_Red_Total/(R2_Total protein)"] = (H2O2_100uM_Pon['R2_RedA'] + H2O2_100uM_Pon['R2_RedB']).div(H2O2_100uM_Pon['R2_Total_protein'])

H2O2_100uM_Pon["R3_Red_Total/(R3_Total potein)"] = (H2O2_100uM_Pon['R3_RedA'] + H2O2_100uM_Pon['R3_RedB']).div(H2O2_100uM_Pon['R3_Total_protein'])

H2O2_100uM_Pon['Average_Red_Total/Total_protein'] = H2O2_100uM_Pon.iloc[:, [10,11,12]].mean(axis=1)

H2O2_100uM_Pon['Std error for Red total Trx/Total protein'] = H2O2_100uM_Pon.iloc[:, [10,11,12]].sem(axis=1)

H2O2_100uM_Pon
Out[72]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 21176.761 7525.368 97193.708 13096.518 7848.447 86653.858 18220.317 13797.388 71104.235 0.295309 0.241708 0.450293 0.329103 0.062539
1 1 6502.719 3293.891 101259.080 3578.648 3085.184 93806.474 1709.062 2561.598 75093.942 0.096748 0.071038 0.056871 0.074886 0.011671
2 5 9721.719 5873.719 99498.930 4689.184 3900.891 86562.675 10699.225 8394.933 83652.648 0.156740 0.099235 0.228255 0.161410 0.037318
3 10 9422.497 6521.255 97089.122 10851.861 9337.790 93324.545 6261.690 4202.912 81312.012 0.164218 0.216338 0.128697 0.169751 0.025451
4 20 12256.376 6772.841 85344.465 13260.719 10000.083 99883.311 15496.317 14457.347 107396.305 0.222970 0.232880 0.278908 0.244919 0.017233
5 40 12433.154 10976.912 85123.344 14774.903 14192.933 100126.281 17796.225 11223.882 69690.013 0.275013 0.289313 0.416417 0.326914 0.044941
6 60 15943.740 11524.669 80409.181 12158.175 17310.569 105495.110 19265.418 16868.175 92095.598 0.341608 0.279338 0.392349 0.337765 0.032680
In [73]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = H2O2_100uM.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.3,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = H2O2_100uM['Time (min)']
y1 = H2O2_100uM['Average_Red_Total/Total_Trx']
y1error = H2O2_100uM['Std error for Trx redox charge'] 
x1error = H2O2_100uM['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_100uM_H2O2.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(0.5,2)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_100uM_H2O2['Time (min)']
y2 = Viability_100uM_H2O2['Average_OD']
y2error = Viability_100uM_H2O2['Std error of average OD'] 
x2error = Viability_100uM_H2O2['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = H2O2_100uM_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0,0.6)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = H2O2_100uM_Pon['Time (min)']
y3 = H2O2_100uM_Pon['Average_Red_Total/Total_protein']
y3error = H2O2_100uM_Pon['Std error for Red total Trx/Total protein'] 
x3error = H2O2_100uM_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('100 uM H2O2_triple plot.png', dpi=500, bbox_inches='tight')
In [110]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_100uM_Pon['Average_Red_Total/Total_protein'] 
y = H2O2_100uM['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_100uM_Pon['Std error for Red total Trx/Total protein'] 
yerr = H2O2_100uM['Std error for Trx redox charge']  

plt.errorbar(x, y, xerr = H2O2_100uM_Pon['Std error for Red total Trx/Total protein'], yerr = H2O2_100uM['Std error for Trx redox charge'] , fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20,color='red')
plt.ylabel(r'Trx redox charge',size=20,color='green')
plt.legend(['100 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0, 0.5])
plt.ylim([0, 1.2])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.959$^{***}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.857$^{*}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.714$^{*}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.920$^{***}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_100 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.9590457908537486
P-value: 0.0006376828000239947
Spearman correlation coefficient: 0.8571428571428573
P-value: 0.01369732661532562
Kendall correlation coefficient: 0.7142857142857143
P-value: 0.03015873015873016
R-squared value: 0.9197688289542924
P-value: 0.0006376828000239902
Slope: 1.94362487145424
Intercept: 0.34233644129682406
Std error: 0.25671997846350253
In [74]:
import matplotlib.pyplot as plt
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_100uM_Pon['Average_Red_Total/Total_protein']
y = Viability_100uM_H2O2['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_100uM_Pon['Std error for Red total Trx/Total protein'] 
yerr = Viability_100uM_H2O2['Std error of average OD'] 

plt.errorbar(x, y, xerr = H2O2_100uM_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_100uM_H2O2['Std error of average OD'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['100 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0, 0.5])
plt.ylim([0, 2])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.742$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.679$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.524$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.551$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_100 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.7419892952651228
P-value: 0.05619792334260914
Spearman correlation coefficient: 0.6785714285714287
P-value: 0.0937502539598313
Kendall correlation coefficient: 0.5238095238095238
P-value: 0.1361111111111111
R-squared value: 0.5505481142880336
P-value: 0.05619792334260908
Slope: 1.443106892942042
Intercept: 0.8501123019779799
Std error: 0.5831193627791655

6.3 Hydrogen peroxide (300 $\mu$M)

Ponceau S images (Total protein)

In [123]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('300uM_H2O2_Pon1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('300uM_H2O2_Pon2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('300uM_H2O2_Pon3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

300 $\mu$M Hydrogen peroxide - Ponceau S (Total protein) analysis

In [75]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\300 uM H2O2 Pon.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\300 uM H2O2 Pon.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\300 uM H2O2 Pon.csv')

H2O2_300uM_Pon = pd.read_csv('300 uM H2O2 Pon.csv')

H2O2_300uM_Pon["R1_Red_Total/(R1_Total protein)"] = (H2O2_300uM_Pon['R1_RedA'] + H2O2_300uM_Pon['R1_RedB']).div(H2O2_300uM_Pon['R1_Total_protein'])

H2O2_300uM_Pon["R2_Red_Total/(R2_Total protein)"] = (H2O2_300uM_Pon['R2_RedA'] + H2O2_300uM_Pon['R2_RedB']).div(H2O2_300uM_Pon['R2_Total_protein'])

H2O2_300uM_Pon["R3_Red_Total/(R3_Total potein)"] = (H2O2_300uM_Pon['R3_RedA'] + H2O2_300uM_Pon['R3_RedB']).div(H2O2_300uM_Pon['R3_Total_protein'])

H2O2_300uM_Pon['Average_Red_Total/Total_protein'] = H2O2_300uM_Pon.iloc[:, [10,11,12]].mean(axis=1)

H2O2_300uM_Pon['Std error for Red total Trx/Total protein'] = H2O2_300uM_Pon.iloc[:, [10,11,12]].sem(axis=1)

H2O2_300uM_Pon
Out[75]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 15900.296 14581.569 94148.929 22997.054 24298.782 120218.394 13344.045 13694.409 80216.465 0.323762 0.393416 0.337069 0.351416 0.021349
1 1 13881.983 16373.296 90771.515 13388.045 13922.489 110806.950 19488.205 13738.326 75364.850 0.333312 0.246470 0.440876 0.340219 0.056226
2 5 16212.690 13494.175 91224.737 18502.267 20641.790 119844.515 23604.104 21565.397 74517.950 0.325645 0.326624 0.606156 0.419475 0.093341
3 10 17530.468 17193.640 90763.636 15255.983 16771.690 107845.394 23719.983 23639.447 74350.536 0.382577 0.296978 0.636975 0.438843 0.102101
4 20 19350.740 20474.447 88847.474 16179.711 19748.447 104731.950 21866.861 20723.205 68107.586 0.448242 0.343049 0.625335 0.472209 0.082365
5 40 17943.619 17363.397 86600.666 15874.075 19613.246 119502.536 18941.033 17260.326 61177.244 0.407699 0.296959 0.591746 0.432134 0.085970
6 60 21780.175 22418.619 89358.051 17890.619 23504.640 97639.436 28010.347 28049.175 68808.557 0.494626 0.423960 0.814717 0.577768 0.120218
In [76]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = H2O2_300uM.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.5,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = H2O2_300uM['Time (min)']
y1 = H2O2_300uM['Average_Red_Total/Total_Trx']
y1error = H2O2_300uM['Std error for Trx redox charge'] 
x1error = H2O2_300uM['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_300uM_H2O2.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(0.6,1.1)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_300uM_H2O2['Time (min)']
y2 = Viability_300uM_H2O2['Average_OD']
y2error = Viability_300uM_H2O2['Std error of average OD'] 
x2error = Viability_300uM_H2O2['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = H2O2_300uM_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0,0.8)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = H2O2_300uM_Pon['Time (min)']
y3 = H2O2_300uM_Pon['Average_Red_Total/Total_protein']
y3error = H2O2_300uM_Pon['Std error for Red total Trx/Total protein'] 
x3error = H2O2_300uM_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('300 uM H2O2_triple plot.png', dpi=500, bbox_inches='tight')
In [127]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_300uM_Pon['Average_Red_Total/Total_protein'] 
y = H2O2_300uM['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_300uM_Pon['Std error for Red total Trx/Total protein']  
yerr = H2O2_300uM['Std error for Trx redox charge'] 

plt.errorbar(x, y, xerr = H2O2_300uM_Pon['Std error for Red total Trx/Total protein'], yerr = H2O2_300uM['Std error for Trx redox charge'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Trx redox charge',size=20,color='green')
plt.legend(['300 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0, 0.8])
plt.ylim([0.3, 1])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: -0.033$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: -0.143$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: -0.238$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.001$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_300 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: -0.03299603675513468
P-value: 0.9440146765483721
Spearman correlation coefficient: -0.14285714285714288
P-value: 0.7599453002180929
Kendall correlation coefficient: -0.23809523809523814
P-value: 0.5619047619047619
R-squared value: 0.001088738441546198
P-value: 0.9440146765483723
Slope: -0.04438412885822125
Intercept: 0.8804926902118704
Std error: 0.6012351655615963
In [77]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_300uM_Pon['Average_Red_Total/Total_protein']
y = Viability_300uM_H2O2['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_300uM_Pon['Std error for Red total Trx/Total protein']  
yerr = Viability_300uM_H2O2['Std error of average OD'] 

plt.errorbar(x, y, xerr = H2O2_300uM_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_300uM_H2O2['Std error of average OD'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['300 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0.2, 0.8])
plt.ylim([0, 1.5])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: -0.591$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: -0.321$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: -0.238$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.349$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_300 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: -0.5907728689203342
P-value: 0.1625012861018384
Spearman correlation coefficient: -0.3214285714285715
P-value: 0.4820720382996776
Kendall correlation coefficient: -0.23809523809523814
P-value: 0.5619047619047619
R-squared value: 0.34901258265236224
P-value: 0.16250128610183837
Slope: -0.7234595521768475
Intercept: 1.13474889814732
Std error: 0.441870499653917

6.4 Hydrogen peroxide (500 $\mu$M)

Ponceau S images (Total protein)

In [130]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('500uM_H2O2_Pon1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('500uM_H2O2_Pon2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('500uM_H2O2_Pon3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

500 $\mu$M Hydrogen peroxide - Ponceau S (Total protein) analysis

In [78]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\500 uM H2O2 Pon.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\500 uM H2O2 Pon.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\500 uM H2O2 Pon.csv')

H2O2_500uM_Pon = pd.read_csv('500 uM H2O2 Pon.csv')

H2O2_500uM_Pon["R1_Red_Total/(R1_Total protein)"] = (H2O2_500uM_Pon['R1_RedA'] + H2O2_500uM_Pon['R1_RedB']).div(H2O2_500uM_Pon['R1_Total_protein'])

H2O2_500uM_Pon["R2_Red_Total/(R2_Total protein)"] = (H2O2_500uM_Pon['R2_RedA'] + H2O2_500uM_Pon['R2_RedB']).div(H2O2_500uM_Pon['R2_Total_protein'])

H2O2_500uM_Pon["R3_Red_Total/(R3_Total potein)"] = (H2O2_500uM_Pon['R3_RedA'] + H2O2_500uM_Pon['R3_RedB']).div(H2O2_500uM_Pon['R3_Total_protein'])

H2O2_500uM_Pon['Average_Red_Total/Total_protein'] = H2O2_500uM_Pon.iloc[:, [10,11,12]].mean(axis=1)

H2O2_500uM_Pon['Std error for Red total Trx/Total protein'] = H2O2_500uM_Pon.iloc[:, [10,11,12]].sem(axis=1)

H2O2_500uM_Pon
Out[78]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 20672.480 19764.480 74533.879 18572.861 14590.033 73389.495 14524.246 9937.874 106545.666 0.542531 0.451875 0.229593 0.408000 0.092963
1 1 15264.326 11304.033 74073.930 15450.497 6535.447 76322.746 10918.175 12862.276 97328.758 0.358674 0.288065 0.244331 0.297023 0.033310
2 5 15104.376 14108.447 71191.131 13848.882 15403.154 76392.989 13129.439 14112.882 74848.001 0.410344 0.382915 0.363969 0.385742 0.013462
3 10 11987.912 6480.790 68849.465 14896.497 7602.790 77771.595 18589.711 12346.518 86899.624 0.268248 0.289300 0.356000 0.304516 0.026450
4 20 16170.083 13470.083 68618.758 8041.397 7961.569 78201.465 19533.054 22061.589 70385.051 0.431954 0.204638 0.590958 0.409183 0.112101
5 40 13543.497 9832.033 73183.365 13606.518 16509.205 84537.636 21214.953 10739.782 79844.766 0.319410 0.356240 0.400211 0.358621 0.023355
6 60 13490.397 10170.861 56679.240 11315.933 11870.962 89636.879 15303.104 10694.054 75714.352 0.417459 0.258676 0.343358 0.339831 0.045871
In [79]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = H2O2_500uM.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.5,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = H2O2_500uM['Time (min)']
y1 = H2O2_500uM['Average_Red_Total/Total_Trx']
y1error = H2O2_500uM['Std error for Trx redox charge'] 
x1error = H2O2_500uM['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_500uM_H2O2.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(0.2,1.2)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_500uM_H2O2['Time (min)']
y2 = Viability_500uM_H2O2['Average_OD']
y2error = Viability_500uM_H2O2['Std error of average OD'] 
x2error = Viability_500uM_H2O2['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = H2O2_500uM_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0,0.6)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = H2O2_500uM_Pon['Time (min)']
y3 = H2O2_500uM_Pon['Average_Red_Total/Total_protein']
y3error = H2O2_500uM_Pon['Std error for Red total Trx/Total protein'] 
x3error = H2O2_500uM_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('500 uM H2O2_triple plot.png', dpi=500, bbox_inches='tight')
In [134]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_500uM_Pon['Average_Red_Total/Total_protein'] 
y = H2O2_500uM['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_500uM_Pon['Std error for Red total Trx/Total protein']  
yerr = H2O2_500uM['Std error for Trx redox charge'] 

plt.errorbar(x, y, xerr = H2O2_500uM_Pon['Std error for Red total Trx/Total protein'] , yerr = H2O2_500uM['Std error for Trx redox charge'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20,color='red')
plt.ylabel(r'Trx redox charge',size=20,color='green')
plt.legend(['500 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0.2, 0.7])
plt.ylim([0, 1])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.351$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.571$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.429$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.123$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_500 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.3510893467615754
P-value: 0.4400169717633042
Spearman correlation coefficient: 0.5714285714285715
P-value: 0.1802019889115274
Kendall correlation coefficient: 0.4285714285714286
P-value: 0.2388888888888889
R-squared value: 0.12326372940946968
P-value: 0.44001697176330395
Slope: 0.8576685616134392
Intercept: 0.5330781301260068
Std error: 1.0229427390078492
In [80]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_500uM_Pon['Average_Red_Total/Total_protein']
y = Viability_500uM_H2O2['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_500uM_Pon['Std error for Red total Trx/Total protein']  
yerr = Viability_500uM_H2O2['Std error of average OD'] 

plt.errorbar(x, y, xerr = H2O2_500uM_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_500uM_H2O2['Std error of average OD'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['500 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0.2, 0.7])
plt.ylim([0, 1.5])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.395$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: -0.214$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: -0.143$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.156$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_500 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.3945308689380464
P-value: 0.38110977031453874
Spearman correlation coefficient: -0.21428571428571433
P-value: 0.6445115810207203
Kendall correlation coefficient: -0.14285714285714288
P-value: 0.7726190476190476
R-squared value: 0.15565460654500998
P-value: 0.3811097703145388
Slope: 2.1491760530699926
Intercept: -0.2909820494961418
Std error: 2.238546245797572

6.5 Hydrogen peroxide (1250 $\mu$M)

Ponceau S images (Total protein)

In [137]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('1250uM_H2O2_Pon1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('1250uM_H2O2_Pon2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('1250uM_H2O2_Pon3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

1250 $\mu$M Hydrogen peroxide - Ponceau S (Total protein) analysis

In [81]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\1250 uM H2O2 Pon.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\1250 uM H2O2 Pon.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\1250 uM H2O2 Pon.csv')

H2O2_1250uM_Pon = pd.read_csv('1250 uM H2O2 Pon.csv')

H2O2_1250uM_Pon["R1_Red_Total/(R1_Total protein)"] = (H2O2_1250uM_Pon['R1_RedA'] + H2O2_1250uM_Pon['R1_RedB']).div(H2O2_1250uM_Pon['R1_Total_protein'])

H2O2_1250uM_Pon["R2_Red_Total/(R2_Total protein)"] = (H2O2_1250uM_Pon['R2_RedA'] + H2O2_1250uM_Pon['R2_RedB']).div(H2O2_1250uM_Pon['R2_Total_protein'])

H2O2_1250uM_Pon["R3_Red_Total/(R3_Total potein)"] = (H2O2_1250uM_Pon['R3_RedA'] + H2O2_1250uM_Pon['R3_RedB']).div(H2O2_1250uM_Pon['R3_Total_protein'])

H2O2_1250uM_Pon['Average_Red_Total/Total_protein'] = H2O2_1250uM_Pon.iloc[:, [10,11,12]].mean(axis=1)

H2O2_1250uM_Pon['Std error for Red total Trx/Total protein'] = H2O2_1250uM_Pon.iloc[:, [10,11,12]].sem(axis=1)

H2O2_1250uM_Pon
Out[81]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 11673.196 5290.962 69140.586 21030.832 23851.104 83844.193 26301.447 21034.154 74266.829 0.245357 0.535302 0.637372 0.472677 0.117417
1 1 20228.296 16396.104 71726.465 17952.276 22276.711 69987.658 22457.276 23018.569 72627.486 0.510612 0.574801 0.626152 0.570522 0.033422
2 5 15205.004 7403.347 70427.829 17089.489 18179.175 79170.385 25167.740 23787.861 71217.728 0.321014 0.445478 0.687408 0.484633 0.107565
3 10 18467.983 9609.326 71689.687 20847.246 19086.589 91113.193 16957.004 17282.276 76336.758 0.391651 0.438288 0.448529 0.426156 0.017504
4 20 19014.146 9324.740 72866.465 18360.790 15624.397 84953.708 5412.740 8360.225 80302.244 0.388915 0.400044 0.171514 0.320158 0.074391
5 40 15893.459 13209.882 70289.788 23058.359 22439.953 81105.364 5758.790 3953.205 98422.980 0.414048 0.560978 0.098676 0.357901 0.136376
6 60 20861.702 18061.033 73265.586 18949.267 15774.317 71247.001 4485.619 5009.104 76944.021 0.531255 0.487369 0.123398 0.380674 0.129260
In [82]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = H2O2_1250uM.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.5,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = H2O2_1250uM['Time (min)']
y1 = H2O2_1250uM['Average_Red_Total/Total_Trx']
y1error = H2O2_1250uM['Std error for Trx redox charge'] 
x1error = H2O2_1250uM['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_1250uM_H2O2.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(0,3)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_1250uM_H2O2['Time (min)']
y2 = Viability_1250uM_H2O2['Average_OD']
y2error = Viability_1250uM_H2O2['Std error of average OD'] 
x2error = Viability_1250uM_H2O2['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = H2O2_1250uM_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0.1,0.7)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = H2O2_1250uM_Pon['Time (min)']
y3 = H2O2_1250uM_Pon['Average_Red_Total/Total_protein']
y3error = H2O2_1250uM_Pon['Std error for Red total Trx/Total protein'] 
x3error = H2O2_1250uM_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('1250 uM H2O2_triple plot.png', dpi=500, bbox_inches='tight')
In [141]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_1250uM_Pon['Average_Red_Total/Total_protein'] 
y = H2O2_1250uM['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_1250uM_Pon['Std error for Red total Trx/Total protein']  
yerr = H2O2_1250uM['Std error for Trx redox charge'] 

plt.errorbar(x, y, xerr = H2O2_1250uM_Pon['Std error for Red total Trx/Total protein'] , yerr = H2O2_1250uM['Std error for Trx redox charge'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Trx redox charge',size=20, color='green')
plt.legend(['1250 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0, 0.7])
plt.ylim([0, 1])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.746$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.643$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.429$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.557$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_1250 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.7463053205143
P-value: 0.05401371979882695
Spearman correlation coefficient: 0.642857142857143
P-value: 0.11939237342741094
Kendall correlation coefficient: 0.4285714285714286
P-value: 0.2388888888888889
R-squared value: 0.5569716314279524
P-value: 0.054013719798826805
Slope: 0.5270083161313818
Intercept: 0.5907450937556176
Std error: 0.21019950871767962
In [83]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = H2O2_1250uM_Pon['Average_Red_Total/Total_protein']
y = Viability_1250uM_H2O2['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = H2O2_1250uM_Pon['Std error for Red total Trx/Total protein']  
yerr = Viability_1250uM_H2O2['Std error of average OD'] 

plt.errorbar(x, y, xerr = H2O2_1250uM_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_1250uM_H2O2['Std error of average OD'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['1250 $\mu$M Hydrogen peroxide'], frameon=False)
plt.xlim([0, 0.7])
plt.ylim([0, 3])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.272$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.750$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.524$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.074$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_1250 uM H2O2.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.2721620151352673
P-value: 0.5548835949417464
Spearman correlation coefficient: 0.7500000000000002
P-value: 0.05218140045705776
Kendall correlation coefficient: 0.5238095238095238
P-value: 0.1361111111111111
R-squared value: 0.07407216248248949
P-value: 0.5548835949417463
Slope: 2.5701057531264024
Intercept: -0.470668150982687
Std error: 4.063750634376342

6.6 Heat (50$^\circ$C)

Ponceau S images (Total protein)

In [145]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Heat_Pon1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Heat_Pon2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Heat_Pon3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

50$^\circ$C Heat - Ponceau S (Total protein) analysis

In [84]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Heat Pon.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Heat Pon.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Heat Pon.csv')

Heat_Pon = pd.read_csv('Heat Pon.csv')

Heat_Pon["R1_Red_Total/(R1_Total protein)"] = (Heat_Pon['R1_RedA'] + Heat_Pon['R1_RedB']).div(Heat_Pon['R1_Total_protein'])

Heat_Pon["R2_Red_Total/(R2_Total protein)"] = (Heat_Pon['R2_RedA'] + Heat_Pon['R2_RedB']).div(Heat_Pon['R2_Total_protein'])

Heat_Pon["R3_Red_Total/(R3_Total potein)"] = (Heat_Pon['R3_RedA'] + Heat_Pon['R3_RedB']).div(Heat_Pon['R3_Total_protein'])

Heat_Pon['Average_Red_Total/Total_protein'] = Heat_Pon.iloc[:, [10,11,12]].mean(axis=1)

Heat_Pon['Std error for Red total Trx/Total protein'] = Heat_Pon.iloc[:, [10,11,12]].sem(axis=1)

Heat_Pon
Out[84]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 17493.790 13674.225 98534.365 12376.497 13979.912 85995.817 17330.397 14604.359 76276.675 0.316316 0.306485 0.418670 0.347157 0.035869
1 1 17178.761 12499.740 97339.382 19027.054 19873.447 84598.332 13861.397 11701.962 75384.311 0.304897 0.459826 0.339107 0.367943 0.046991
2 5 16838.083 9275.376 102515.604 10342.426 13372.426 89665.202 17092.782 14310.711 67548.017 0.254727 0.264482 0.464906 0.328038 0.068492
3 10 15274.376 12626.255 86471.462 8860.095 14973.439 95160.908 18533.933 9486.347 68219.382 0.322657 0.250455 0.410738 0.327950 0.046345
4 20 17336.376 9586.255 76759.332 10631.731 18943.681 93698.202 18351.004 11337.347 70244.976 0.350741 0.315645 0.422640 0.363009 0.031490
5 40 11995.125 10279.447 77062.636 12974.640 18540.004 88988.482 20367.690 8493.468 70821.340 0.289045 0.354143 0.407521 0.350236 0.034257
6 60 9858.903 9131.569 82903.231 5157.397 11568.882 95025.637 19964.175 11589.175 73423.018 0.229068 0.176019 0.429747 0.278278 0.077267
In [85]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = Heat.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.6,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = Heat['Time (min)']
y1 = Heat['Average_Red_Total/Total_Trx']
y1error = Heat['Std error for Trx redox charge'] 
x1error = Heat['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_Heat.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(0.4,1.3)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_Heat['Time (min)']
y2 = Viability_Heat['Average_OD']
y2error = Viability_Heat['Std error of average OD'] 
x2error = Viability_Heat['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = Heat_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0.1,0.5)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = Heat_Pon['Time (min)']
y3 = Heat_Pon['Average_Red_Total/Total_protein']
y3error = Heat_Pon['Std error for Red total Trx/Total protein'] 
x3error = Heat_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('Heat_triple plot.png', dpi=500, bbox_inches='tight')
In [149]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = Heat_Pon['Average_Red_Total/Total_protein'] 
y = Heat['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = Heat_Pon['Std error for Red total Trx/Total protein']  
yerr = Heat['Std error for Trx redox charge'] 

plt.errorbar(x, y, xerr = Heat_Pon['Std error for Red total Trx/Total protein'] , yerr = Heat['Std error for Trx redox charge'], fmt='o', color="black", capsize = 4)

plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Trx redox charge',size=20, color='green')
plt.legend(['50$^\circ$C Heat'], frameon=False)
plt.xlim([0, 0.5])
plt.ylim([0, 1])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.486$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.429$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.333$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.237$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_Heat.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.4863918354649628
P-value: 0.2683780874205306
Spearman correlation coefficient: 0.42857142857142866
P-value: 0.337368311085824
Kendall correlation coefficient: 0.33333333333333337
P-value: 0.3813492063492063
R-squared value: 0.23657701760697544
P-value: 0.26837808742053054
Slope: 1.219419459566373
Intercept: 0.42106721408052444
Std error: 0.9796353716111671
In [86]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = Heat_Pon['Average_Red_Total/Total_protein']
y = Viability_Heat['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = Heat_Pon['Std error for Red total Trx/Total protein']  
yerr = Viability_Heat['Std error of average OD'] 

plt.errorbar(x, y, xerr = Heat_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_Heat['Std error of average OD'], fmt='o', color="black", capsize = 4)

plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['50$^\circ$C Heat'], frameon=False)
plt.xlim([0, 0.5])
plt.ylim([0, 1.5])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.591$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.357$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.333$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.349$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_Heat.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.590922836040731
P-value: 0.1623675911133033
Spearman correlation coefficient: 0.3571428571428572
P-value: 0.4316113520383278
Kendall correlation coefficient: 0.33333333333333337
P-value: 0.3813492063492063
R-squared value: 0.34918979815442097
P-value: 0.16236759111330293
Slope: 3.556580559960081
Intercept: -0.3091646302467742
Std error: 2.1714210856911644

6.7 Cadmium sulfate (8 mM)

Ponceau S images (Total protein)

In [152]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cadmium_Pon1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cadmium_Pon2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cadmium_Pon3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

8 mM Cadmium sulfate - Ponceau S (Total protein) analysis

In [87]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Cadmium Pon.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Cadmium Pon.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Cadmium Pon.csv')

Cadmium_Pon = pd.read_csv('Cadmium Pon.csv')

Cadmium_Pon["R1_Red_Total/(R1_Total protein)"] = (Cadmium_Pon['R1_RedA'] + Cadmium_Pon['R1_RedB']).div(Cadmium_Pon['R1_Total_protein'])

Cadmium_Pon["R2_Red_Total/(R2_Total protein)"] = (Cadmium_Pon['R2_RedA'] + Cadmium_Pon['R2_RedB']).div(Cadmium_Pon['R2_Total_protein'])

Cadmium_Pon["R3_Red_Total/(R3_Total potein)"] = (Cadmium_Pon['R3_RedA'] + Cadmium_Pon['R3_RedB']).div(Cadmium_Pon['R3_Total_protein'])

Cadmium_Pon['Average_Red_Total/Total_protein'] = Cadmium_Pon.iloc[:, [10,11,12]].mean(axis=1)

Cadmium_Pon['Std error for Red total Trx/Total protein'] = Cadmium_Pon.iloc[:, [10,11,12]].sem(axis=1)

Cadmium_Pon
Out[87]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 17688.790 17547.782 101488.423 19228.376 10305.376 87884.624 16885.175 8766.380 102569.239 0.347198 0.336051 0.250090 0.311113 0.030681
1 1 17208.083 12133.669 105131.666 17443.376 5854.376 92468.846 19337.225 11259.640 97474.805 0.279095 0.251952 0.313895 0.281648 0.017927
2 5 17583.912 13121.376 95408.140 18918.154 5967.619 93977.462 18632.640 9977.539 86729.716 0.321831 0.264806 0.329877 0.305505 0.020482
3 10 17532.083 10473.376 88923.754 16403.569 6270.033 101138.654 13099.933 2207.861 88371.775 0.314938 0.224183 0.173220 0.237447 0.041444
4 20 18154.569 10740.497 86199.160 15853.205 4004.376 101775.391 17704.933 6031.518 83835.796 0.335213 0.195112 0.283130 0.271152 0.040885
5 40 10251.548 7392.669 70292.201 10527.033 3512.962 98725.411 16744.933 4039.740 83510.110 0.251012 0.142213 0.248888 0.214038 0.035918
6 60 20430.033 8626.548 83803.997 6423.255 2300.770 97289.039 18447.953 7234.690 83561.997 0.346721 0.089671 0.307348 0.247913 0.079933
In [88]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = Cadmium.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.6,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = Cadmium['Time (min)']
y1 = Cadmium['Average_Red_Total/Total_Trx']
y1error = Cadmium['Std error for Trx redox charge'] 
x1error = Cadmium['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_Cadmium.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(0,2.5)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_Cadmium['Time (min)']
y2 = Viability_Cadmium['Average_OD']
y2error = Viability_Cadmium['Std error of average OD'] 
x2error = Viability_Cadmium['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = Cadmium_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0.1,0.5)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = Cadmium_Pon['Time (min)']
y3 = Cadmium_Pon['Average_Red_Total/Total_protein']
y3error = Cadmium_Pon['Std error for Red total Trx/Total protein'] 
x3error = Cadmium_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('Cadmium_triple plot.png', dpi=500, bbox_inches='tight')
In [156]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = Cadmium_Pon['Average_Red_Total/Total_protein'] 
y = Cadmium['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = Cadmium_Pon['Std error for Red total Trx/Total protein']  
yerr = Cadmium['Std error for Trx redox charge'] 

plt.errorbar(x, y, xerr = Cadmium_Pon['Std error for Red total Trx/Total protein'] , yerr = Cadmium['Std error for Trx redox charge'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Trx redox charge',size=20, color='green')
plt.legend(['8 mM Cadmium sulfate'], frameon=False)
plt.xlim([0.1, 0.4])
plt.ylim([0.2, 1])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.096$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.286$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.238$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.009$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_Cadmium.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.09574393743610043
P-value: 0.8382040119595195
Spearman correlation coefficient: 0.28571428571428575
P-value: 0.5345092286010406
Kendall correlation coefficient: 0.23809523809523814
P-value: 0.5619047619047619
R-squared value: 0.009166901555767906
P-value: 0.8382040119595193
Slope: 0.20902228110188995
Intercept: 0.7779456322912819
Std error: 0.9718439824117848
In [89]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = Cadmium_Pon['Average_Red_Total/Total_protein']
y = Viability_Cadmium['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = Cadmium_Pon['Std error for Red total Trx/Total protein']  
yerr = Viability_Cadmium['Std error of average OD'] 

plt.errorbar(x, y, xerr = Cadmium_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_Cadmium['Std error of average OD'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['8 mM Cadmium sulfate'], frameon=False)
plt.xlim([0, 0.5])
plt.ylim([0, 3])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.594$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.429$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.333$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.352$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_Cadmium.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.5935580919884087
P-value: 0.16002718855126458
Spearman correlation coefficient: 0.42857142857142866
P-value: 0.337368311085824
Kendall correlation coefficient: 0.33333333333333337
P-value: 0.3813492063492063
R-squared value: 0.3523112085649204
P-value: 0.16002718855126435
Slope: 11.213293554204425
Intercept: -2.2923204489134457
Std error: 6.799361787774675

6.8 Potassium ferricyanide (30 mM)

Ponceau S images (Total protein)

In [159]:
plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cyanide_Pon1.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cyanide_Pon2.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

plt.rcParams["figure.figsize"] = (16,12)
img = mpimg.imread('Cyanide_Pon3.png')
imgplot = plt.imshow(img)
plt.axis("off")
plt.show()

30 mM Potassium ferricyanide - Ponceau S (Total protein) analysis

In [90]:
read_file = pd.read_excel (r'C:\Users\Tejal\Desktop\Supplementary material\Cyanide Pon.xlsx')
read_file.to_csv (r'C:\Users\Tejal\Desktop\Supplementary material\Cyanide Pon.csv', index = None, header=True)
pd.read_csv(r'C:\Users\Tejal\Desktop\Supplementary material\Cyanide Pon.csv')

Cyanide_Pon = pd.read_csv('Cyanide Pon.csv')

Cyanide_Pon["R1_Red_Total/(R1_Total protein)"] = (Cyanide_Pon['R1_RedA'] + Cyanide_Pon['R1_RedB']).div(Cyanide_Pon['R1_Total_protein'])

Cyanide_Pon["R2_Red_Total/(R2_Total protein)"] = (Cyanide_Pon['R2_RedA'] + Cyanide_Pon['R2_RedB']).div(Cyanide_Pon['R2_Total_protein'])

Cyanide_Pon["R3_Red_Total/(R3_Total potein)"] = (Cyanide_Pon['R3_RedA'] + Cyanide_Pon['R3_RedB']).div(Cyanide_Pon['R3_Total_protein'])

Cyanide_Pon['Average_Red_Total/Total_protein'] = Cyanide_Pon.iloc[:, [10,11,12]].mean(axis=1)

Cyanide_Pon['Std error for Red total Trx/Total protein'] = Cyanide_Pon.iloc[:, [10,11,12]].sem(axis=1)

Cyanide_Pon
Out[90]:
Time (min) R1_RedA R1_RedB R1_Total_protein R2_RedA R2_RedB R2_Total_protein R3_RedA R3_RedB R3_Total_protein R1_Red_Total/(R1_Total protein) R2_Red_Total/(R2_Total protein) R3_Red_Total/(R3_Total potein) Average_Red_Total/Total_protein Std error for Red total Trx/Total protein
0 0 20783.489 13630.740 100965.754 14544.255 17686.447 65669.239 14561.347 14875.480 95201.725 0.340851 0.490804 0.309205 0.380286 0.056009
1 1 14813.669 8270.497 105736.240 15903.447 13931.276 74416.826 18137.640 12067.933 94222.897 0.218318 0.400914 0.320576 0.313269 0.052837
2 5 14465.376 12153.255 94107.169 13642.962 19258.083 85881.704 17922.225 11371.347 97615.574 0.282854 0.383097 0.300091 0.322014 0.030944
3 10 12061.104 5352.861 78537.642 10397.326 17373.640 82230.968 13752.811 4826.397 96097.775 0.221728 0.337719 0.193337 0.250928 0.044163
4 20 15847.569 13193.104 69456.189 9465.790 10144.205 86442.403 17037.518 8787.518 92981.210 0.418115 0.226856 0.277745 0.307572 0.057190
5 40 16139.569 15567.154 72129.441 10295.790 20050.569 84972.938 18238.518 6997.690 93324.139 0.439581 0.357130 0.270415 0.355708 0.048839
6 60 18565.669 12961.912 70092.140 8443.861 8782.246 78479.373 18250.104 7364.326 97842.189 0.449802 0.219499 0.261793 0.310365 0.070780
In [91]:
fig, ax1 = plt.subplots()
ax2=ax1.twinx()
ax3=ax1.twinx()

ax1 = Cyanide.plot('Time (min)','Average_Red_Total/Total_Trx', color = 'green', ax=ax1, figsize=(9,6), marker = 'o')
ax1.set_ylabel('Trx redox charge', color = 'green', fontsize=18)
ax1.set_ylim(0.65,1)
ax1.tick_params(axis = 'y', colors = 'green', labelsize=18)
ax3.spines['left'].set_color('green')

x1 = Cyanide['Time (min)']
y1 = Cyanide['Average_Red_Total/Total_Trx']
y1error = Cyanide['Std error for Trx redox charge'] 
x1error = Cyanide['Std error for Trx redox charge']

ax1.errorbar(x1,y1,yerr=y1error,xerr=x1error, color='green', capsize=3)

ax2 = Viability_Cyanide.plot('Time (min)','Average_OD', color = 'blue', ax=ax2, marker = 'o')
ax2.set_ylabel('Absorbance (562 nm)', color = 'blue', fontsize=18)
ax2.set_ylim(0.5,2.5)
ax2.tick_params(axis = 'y', colors = 'blue', labelsize=18)
ax2.spines['right'].set_color('blue')

x2 = Viability_Cyanide['Time (min)']
y2 = Viability_Cyanide['Average_OD']
y2error = Viability_Cyanide['Std error of average OD'] 
x2error = Viability_Cyanide['Std error of average OD']

ax2.errorbar(x2,y2,yerr=y2error,xerr=x2error, color='blue', capsize=3)

ax3 = Cyanide_Pon.plot('Time (min)','Average_Red_Total/Total_protein', color = 'red', ax=ax3, marker = 'o')
ax3.set_ylabel('Reduced Trx/Total protein', color = 'red', fontsize=18)
ax3.set_ylim(0.1,0.5)
ax3.tick_params(axis = 'y', colors = 'red', labelsize=18)
ax3.spines['right'].set_position(('outward', 80))
ax3.spines['right'].set_color('red')

x3 = Cyanide_Pon['Time (min)']
y3 = Cyanide_Pon['Average_Red_Total/Total_protein']
y3error = Cyanide_Pon['Std error for Red total Trx/Total protein'] 
x3error = Cyanide_Pon['Std error for Red total Trx/Total protein']

ax3.errorbar(x3,y3,yerr=y3error,xerr=x3error, color='red', capsize=3)

ax1.set_xlabel('Time (min)', color = 'Black', fontsize=18)
ax1.tick_params(axis='x', labelsize=18)

ax1.get_legend().remove()
ax2.get_legend().remove()
ax3.get_legend().remove()

plt.plot()
plt.savefig('Cyanide_triple plot.png', dpi=500, bbox_inches='tight')
In [164]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = Cyanide_Pon['Average_Red_Total/Total_protein'] 
y = Cyanide['Average_Red_Total/Total_Trx']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = Cyanide_Pon['Std error for Red total Trx/Total protein']  
yerr = Cyanide['Std error for Trx redox charge'] 

plt.errorbar(x, y, xerr = Cyanide_Pon['Std error for Red total Trx/Total protein'] , yerr = Cyanide['Std error for Trx redox charge'], fmt='o', color="black", capsize = 4)

plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Trx redox charge',size=20, color='green')
plt.legend(['30 mM Potassium ferricyanide'], frameon=False)
plt.xlim([0, 0.6])
plt.ylim([0.4, 1])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.212$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: -0.143$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: -0.143$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.045$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ponceau_correlation_Cyanide.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.2115506239476709
P-value: 0.6488426710232864
Spearman correlation coefficient: -0.14285714285714288
P-value: 0.7599453002180929
Kendall correlation coefficient: -0.14285714285714288
P-value: 0.7726190476190476
R-squared value: 0.04475366649264887
P-value: 0.6488426710232864
Slope: 0.34933422260476094
Intercept: 0.7101967577397362
Std error: 0.7217711360551091
In [92]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = Cyanide_Pon['Average_Red_Total/Total_protein']
y = Viability_Cyanide['Average_OD']

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

xerr = Cyanide_Pon['Std error for Red total Trx/Total protein']  
yerr = Viability_Cyanide['Std error of average OD'] 

plt.errorbar(x, y, xerr = Cyanide_Pon['Std error for Red total Trx/Total protein'], yerr = Viability_Cyanide['Std error of average OD'], fmt='o', color="black", capsize = 4)
plt.scatter(x, y, s=40, color = 'black')
plt.xlabel(r'Reduced Trx/Total protein',size=20, color='red')
plt.ylabel(r'Absorbance (562 nm)',size=20, color='blue')
plt.legend(['30 mM Potassium ferricyanide'], frameon=False)
plt.xlim([0.1, 0.5])
plt.ylim([0, 3])

plt.xticks(fontsize=18)
plt.xticks(rotation=30)
plt.yticks(fontsize=18)

plt.figtext(0.92, 0.85, 'Pearson correlation: 0.619$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.75, 'Spearman correlation: 0.357$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.65, 'Kendall correlation: 0.238$^{ns}$', fontsize=16)
plt.figtext(0.92, 0.55, 'R-squared value: 0.383$^{ns}$', fontsize=16)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Viability vs total protein_Cyanide.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: 0.6188312425503902
P-value: 0.1384445304161275
Spearman correlation coefficient: 0.3571428571428572
P-value: 0.4316113520383278
Kendall correlation coefficient: 0.23809523809523814
P-value: 0.5619047619047619
R-squared value: 0.3829521067564603
P-value: 0.13844453041612706
Slope: 6.775299755102104
Intercept: -0.9185195830774568
Std error: 3.846189849636517

Section S7 - Supporting correlation data between the Trx redox charge and cell viability extrapolated from literature

Data were extrapolated from Figures 2D and 3C.

Zou, L., Lu, J., Wang, J., Ren, X., Zhang, L., Gao, Y., Rottenberg, M. E. & Holmgren, A. 2017. Synergistic antibacterial effect of silver and ebselen against multidrug‐resistant Gram‐negative bacterial infections. EMBO Mol Med, 9, 1165-1178.

In [22]:
from numpy.random import randn
from numpy.random import seed
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy import stats

plt.figure(figsize=(10,7))

x = [79.72972973, 79.72972973, 70.4954955, 44.36936937, 40.54054054, 42.56756757, 23.64864865, 28.6036036]
y = [19.42, 26.99, 41.36, 51.07, 54.17, 67.38, 66.80, 64.27]
yerr = [0.970873786, 6.796116505, 4.27184466, 0.970873786, 3.300970874, 4.466019417, 1.941747573, 3.883495146]

corr, pvalue = scipy.stats.pearsonr(x, y)
print('Pearson correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.spearmanr(x, y)
print('Spearman correlation coefficient:', corr)
print('P-value:', pvalue)

corr, pvalue = scipy.stats.kendalltau(x, y)
print('Kendall correlation coefficient:', corr)
print('P-value:', pvalue)

slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print('R-squared value:',r_value**2)
print('P-value:', p_value)
print('Slope:', slope)
print('Intercept:', intercept)
print('Std error:', std_err)

print('Distance correlation, P-value') 
dcor, pval = distance_corr(x, y, seed=None) 
print(round(dcor, 3), pval)

plt.scatter(x, y, s=40, color = 'black', label = 'Ebselen + Silver')
plt.xlabel(r'Trx redox charge (%)',size=20)
plt.ylabel(r'Cell death (%)',size=20)
plt.legend(['Ebselen + Silver'], frameon=False)
plt.errorbar(x,y,yerr=yerr, fmt=' ', color='black', capsize=4)
plt.legend(fontsize=18)

plt.xticks(fontsize=18)

plt.yticks(fontsize=18)

# ns = non-significant,  * = p<0.05, ** = p<0.01, *** = p<0.001, **** = p<0.0001

plt.savefig('Ebselen.png', dpi=500, bbox_inches='tight')
plt.show()
Pearson correlation coefficient: -0.9374433398809807
P-value: 0.0005836581656744896
Spearman correlation coefficient: -0.8503146459584138
P-value: 0.007471414639953467
Kendall correlation coefficient: -0.7637626158259734
P-value: 0.008839740160738538
R-squared value: 0.8788000154872081
P-value: 0.0005836581656744867
Slope: -0.7654433431363712
Intercept: 88.13130183511046
Std error: 0.11604960844780417
Distance correlation, P-value
0.944 0.003

Section S8 - Model of hydrogen peroxide metabolism in fission yeast

A computational model of hydrogen peroxide metabolism was used to assess the stability of the thioredoxin redox charge in response to the external hydrogen peroxide concentrations tested in this study (100, 300, 500 and 1250 $\mu$M).

Tomalin, L. E., Day, A. M., Underwood, Z. E., Smith, G. R., Dalle Pezze, P., Rallis, C., Patel, W., Dickinson, B. C., Bähler, J., Brewer, T. F., Chang, C. J.-L., Shanley, D. P. & Veal, E. A. 2016. Increasing extracellular H2O2 produces a bi-phasic response in intracellular H2O2, with peroxiredoxin hyperoxidation only triggered once the cellular H2O2-buffering capacity is overwhelmed. Free Radical Biology & Medicine, 95, 333-348.

In [2]:
%matplotlib inline
from matplotlib import pyplot as plt
from matplotlib.ticker import (MultipleLocator, FormatStrFormatter)
import numpy as np
import scipy as sp
import os
backupdir = os.getcwd()
import pysces
import time
import numpy
import copy
pysces.PyscesModel.MODEL_DIR=backupdir
pysces.PyscesModel.OUTPUT_DIR=backupdir
os.chdir(backupdir)
Matplotlib backend set to: "nbAgg"
Matplotlib interface loaded (pysces.plt.m)
Continuation routines available
NLEQ2 routines available
No module named 'libsbml'
INFO: No SBML library found, SBML support not available
You are using NumPy (1.20.3) with SciPy (1.7.3)
RateChar is available
Parallel scanner is available

PySCeS environment
******************
pysces.model_dir = C:\Users\Tejal\Pysces\psc
pysces.output_dir = C:\Users\Tejal\Pysces


***********************************************************************
* Welcome to PySCeS (0.9.8post1) - Python Simulator for Cellular Systems   *
*                http://pysces.sourceforge.net                        *
* Copyright(C) B.G. Olivier, J.M. Rohwer, J.-H.S. Hofmeyr, 2004-2020  *
* Triple-J Group for Molecular Cell Physiology                        *
* Stellenbosch University, ZA and VU University Amsterdam, NL         *
* PySCeS is distributed under the PySCeS (BSD style) licence, see     *
* LICENCE.txt (supplied with this release) for details                *
* Please cite PySCeS with: doi:10.1093/bioinformatics/bti046          *
***********************************************************************

8.1 No stress control

In [4]:
o=pysces.model('Tomalin.psc')
o.H2O2_ex_init = 0
o.doSim(points = 1001, end = 1000)

sim = o.sim[5:]  # get rid of initial burst
t = sim.Time
red_rate = sim.reaction_13*1e6
SH = sim.Trx1SH
SS = sim.Trx1_ox
RP = (-0.27+(0.0615/2)*numpy.log10(SS/SH))*1000
RR = SH/SS
oxRC = SS/(SH+SS)
redRC = SH/(SH+SS)

fig=plt.figure(figsize=(10,7))
ax1 = fig.add_subplot()

ax1.plot(t, red_rate, 'k-' )
ax1.set_ylabel(r'Rate (pM/s)', size=26)
ax1.set_xlabel(r'Time (s)', size=26)
ax1.set_xlim([0, 1000])
ax1.set_ylim([0, 10.5])
ax2 = ax1.twinx()
ax2.plot(t, redRC, 'b-')
ax2.set_ylabel(r'Trx Redox Charge', size=26, color='b')
ax2.set_yticks(np.arange(0.992, 1, 0.001))
ax1.tick_params(axis = 'y', labelsize=26)
ax2.tick_params(axis = 'y', labelsize=26)
ax1.tick_params(axis = 'x', labelsize=26)
ax1.tick_params(axis = 'x', rotation=30)

fig.tight_layout()
fig.savefig('No H2O2.png', dpi=500)
Using model directory: C:\Users\Tejal\Desktop\Supplementary material
C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc loading ..... 
Parsing file: C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc
Info: No reagents have been fixed
 
Calculating L matrix . . . . . . . . .  done.
Calculating K matrix . . . . . . .  done.
 
LSODA time for 1001 points: 0.2254953384399414
C:\Users\Tejal\anaconda3\lib\site-packages\scipy\integrate\odepack.py:250: ODEintWarning: Integration successful.
  warnings.warn(warning_msg, ODEintWarning)

8.2 Hydrogen peroxide (100 $\mu$M)

In [3]:
o=pysces.model('Tomalin.psc')
o.H2O2_ex_init = 100.0
o.doSim(points = 1001, end = 1000)

sim = o.sim[5:]  # get rid of initial burst
t = sim.Time
red_rate = sim.reaction_13*1e6
SH = sim.Trx1SH
SS = sim.Trx1_ox
RP = (-0.27+(0.0615/2)*numpy.log10(SS/SH))*1000
RR = SH/SS
oxRC = SS/(SH+SS)
redRC = SH/(SH+SS)

fig=plt.figure(figsize=(10,7))
ax1 = fig.add_subplot()

ax1.plot(t, red_rate, 'k-' )
ax1.set_ylabel(r'Rate (pM/s)', size=26)
ax1.set_xlabel(r'Time (s)', size=26)
ax1.set_xlim([0, 1000])
ax1.set_ylim([0, 10.5])
ax2 = ax1.twinx()
ax2.plot(t, redRC, 'b-')
ax2.set_ylabel(r'Trx Redox Charge', size=26, color='b')
ax2.set_yticks(np.arange(0.992, 1, 0.001))
ax1.tick_params(axis = 'y', labelsize=26)
ax2.tick_params(axis = 'y', labelsize=26)
ax1.tick_params(axis = 'x', labelsize=26)
ax1.tick_params(axis = 'x', rotation=30)

fig.tight_layout()
fig.savefig('100 uM H2O2.png', dpi=500)
Using model directory: C:\Users\Tejal\Desktop\Supplementary material
C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc loading ..... 
Parsing file: C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc
Info: No reagents have been fixed
 
Calculating L matrix . . . . . . . . .  done.
Calculating K matrix . . . . . . .  done.
 
C:\Users\Tejal\anaconda3\lib\site-packages\scipy\integrate\odepack.py:250: ODEintWarning: Integration successful.
  warnings.warn(warning_msg, ODEintWarning)
LSODA time for 1001 points: 0.34398436546325684

8.3 Hydrogen peroxide (300 $\mu$M)

In [5]:
o=pysces.model('Tomalin.psc')
o.H2O2_ex_init = 300.0
o.doSim(points = 1001, end = 1000)

sim = o.sim[5:]  # get rid of initial burst
t = sim.Time
red_rate = sim.reaction_13*1e6
SH = sim.Trx1SH
SS = sim.Trx1_ox
RP = (-0.27+(0.0615/2)*numpy.log10(SS/SH))*1000
RR = SH/SS
oxRC = SS/(SH+SS)
redRC = SH/(SH+SS)

fig=plt.figure(figsize=(10,7))
ax1 = fig.add_subplot()

ax1.plot(t, red_rate, 'k-' )
ax1.set_ylabel(r'Rate (pM/s)', size=26)
ax1.set_xlabel(r'Time (s)', size=26)
ax1.set_xlim([0, 1000])
ax1.set_ylim([0, 10.5])
ax2 = ax1.twinx()
ax2.plot(t, redRC, 'b-')
ax2.set_ylabel(r'Trx Redox Charge', size=26, color='b')
ax2.set_yticks(np.arange(0.992, 1, 0.001))
ax1.tick_params(axis = 'y', labelsize=26)
ax2.tick_params(axis = 'y', labelsize=26)
ax1.tick_params(axis = 'x', labelsize=26)
ax1.tick_params(axis = 'x', rotation=30)

fig.tight_layout()
fig.savefig('300 uM H2O2.png', dpi=500)
Using model directory: C:\Users\Tejal\Desktop\Supplementary material
C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc loading ..... 
Parsing file: C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc
Info: No reagents have been fixed
 
Calculating L matrix . . . . . . . . .  done.
Calculating K matrix . . . . . . .  done.
 
LSODA time for 1001 points: 0.42751121520996094
C:\Users\Tejal\anaconda3\lib\site-packages\scipy\integrate\odepack.py:250: ODEintWarning: Integration successful.
  warnings.warn(warning_msg, ODEintWarning)

8.4 Hydrogen peroxide (500 $\mu$M)

In [6]:
o=pysces.model('Tomalin.psc')
o.H2O2_ex_init = 500.0
o.doSim(points = 1001, end = 1000)

sim = o.sim[5:]  # get rid of initial burst
t = sim.Time
red_rate = sim.reaction_13*1e6
SH = sim.Trx1SH
SS = sim.Trx1_ox
RP = (-0.27+(0.0615/2)*numpy.log10(SS/SH))*1000
RR = SH/SS
oxRC = SS/(SH+SS)
redRC = SH/(SH+SS)

fig=plt.figure(figsize=(10,7))
ax1 = fig.add_subplot()

ax1.plot(t, red_rate, 'k-' )
ax1.set_ylabel(r'Rate (pM/s)', size=26)
ax1.set_xlabel(r'Time (s)', size=26)
ax1.set_xlim([0, 1000])
ax1.set_ylim([0, 10.5])
ax2 = ax1.twinx()
ax2.plot(t, redRC, 'b-')
ax2.set_ylabel(r'Trx Redox Charge', size=26, color='b')
ax2.set_yticks(np.arange(0.992, 1, 0.001))
ax1.tick_params(axis = 'y', labelsize=26)
ax2.tick_params(axis = 'y', labelsize=26)
ax1.tick_params(axis = 'x', labelsize=26)
ax1.tick_params(axis = 'x', rotation=30)

fig.tight_layout()
fig.savefig('500 uM H2O2.png', dpi=500)
Using model directory: C:\Users\Tejal\Desktop\Supplementary material
C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc loading ..... 
Parsing file: C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc
Info: No reagents have been fixed
 
Calculating L matrix . . . . . . . . .  done.
Calculating K matrix . . . . . . .  done.
 
LSODA time for 1001 points: 0.4349956512451172
C:\Users\Tejal\anaconda3\lib\site-packages\scipy\integrate\odepack.py:250: ODEintWarning: Integration successful.
  warnings.warn(warning_msg, ODEintWarning)

8.5 Hydrogen peroxide (1250 $\mu$M)

In [7]:
o=pysces.model('Tomalin.psc')
o.H2O2_ex_init = 1250.0
o.doSim(points = 1001, end = 1000)

sim = o.sim[5:]  # get rid of initial burst
t = sim.Time
red_rate = sim.reaction_13*1e6
SH = sim.Trx1SH
SS = sim.Trx1_ox
RP = (-0.27+(0.0615/2)*numpy.log10(SS/SH))*1000
RR = SH/SS
oxRC = SS/(SH+SS)
redRC = SH/(SH+SS)

fig=plt.figure(figsize=(10,7))
ax1 = fig.add_subplot()

ax1.plot(t, red_rate, 'k-' )
ax1.set_ylabel(r'Rate (pM/s)', size=26)
ax1.set_xlabel(r'Time (s)', size=26)
ax1.set_xlim([0, 1000])
ax1.set_ylim([0, 10.5])
ax2 = ax1.twinx()
ax2.plot(t, redRC, 'b-')
ax2.set_ylabel(r'Trx Redox Charge', size=26, color='b')
ax2.set_yticks(np.arange(0.992, 1, 0.001))
ax1.tick_params(axis = 'y', labelsize=26)
ax2.tick_params(axis = 'y', labelsize=26)
ax1.tick_params(axis = 'x', labelsize=26)
ax1.tick_params(axis = 'x', rotation=30)

fig.tight_layout()
fig.savefig('1250 uM H2O2.png', dpi=500)
Using model directory: C:\Users\Tejal\Desktop\Supplementary material
C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc loading ..... 
Parsing file: C:\Users\Tejal\Desktop\Supplementary material\Tomalin.psc
Info: No reagents have been fixed
 
Calculating L matrix . . . . . . . . .  done.
Calculating K matrix . . . . . . .  done.
 
LSODA time for 1001 points: 0.42572975158691406
C:\Users\Tejal\anaconda3\lib\site-packages\scipy\integrate\odepack.py:250: ODEintWarning: Integration successful.
  warnings.warn(warning_msg, ODEintWarning)
In [ ]: